Text Compare
Produced: 7/19/2015 1:52:25 PM
   
Mode:  All, With Context  
Left file: C:\mksong\workspace_genproglase\genproglase-output-r1658\template08\0718-1345\valgrind-bug-12641-12642\sanity\coregrind\m_mallocfree.c  
Right file: C:\mksong\workspace_genproglase\genproglase-output-r1658\template08\0718-1345\valgrind-bug-12641-12642\000000\coregrind\m_mallocfree.c  
1 typedef unsigned char UChar; = 1 typedef unsigned char UChar;
2 typedef signed char Char;   2 typedef signed char Char;
3 typedef char HChar;   3 typedef char HChar;
4 typedef unsigned short UShort;   4 typedef unsigned short UShort;
5 typedef short Short;   5 typedef short Short;
6 typedef unsigned int UInt;   6 typedef unsigned int UInt;
7 typedef int Int;   7 typedef int Int;
8 typedef unsigned long long ULong;   8 typedef unsigned long long ULong;
9 typedef long long Long;   9 typedef long long Long;
10 typedef UInt U128[4];   10 typedef UInt U128[4];
11 typedef UInt U256[8];   11 typedef UInt U256[8];
12 union __anonunion_V128_1 {   12 union __anonunion_V128_1 {
13    UChar w8[16] ;   13    UChar w8[16] ;
14    UShort w16[8] ;   14    UShort w16[8] ;
15    UInt w32[4] ;   15    UInt w32[4] ;
16    ULong w64[2] ;   16    ULong w64[2] ;
17 };   17 };
18 typedef union __anonunion_V128_1 V128;   18 typedef union __anonunion_V128_1 V128;
19 typedef float Float;   19 typedef float Float;
20 typedef double Double;   20 typedef double Double;
21 typedef unsigned char Bool;   21 typedef unsigned char Bool;
22 typedef UInt Addr32;   22 typedef UInt Addr32;
23 typedef ULong Addr64;   23 typedef ULong Addr64;
24 typedef unsigned long HWord;   24 typedef unsigned long HWord;
25 typedef __builtin_va_list __gnuc_va_list;   25 typedef __builtin_va_list __gnuc_va_list;
26 typedef __gnuc_va_list va_list;   26 typedef __gnuc_va_list va_list;
27 typedef unsigned long UWord;   27 typedef unsigned long UWord;
28 typedef long Word;   28 typedef long Word;
29 typedef UWord Addr;   29 typedef UWord Addr;
30 typedef UWord AddrH;   30 typedef UWord AddrH;
31 typedef UWord SizeT;   31 typedef UWord SizeT;
32 typedef Word SSizeT;   32 typedef Word SSizeT;
33 typedef Word PtrdiffT;   33 typedef Word PtrdiffT;
34 typedef Word OffT;   34 typedef Word OffT;
35 typedef Long Off64T;   35 typedef Long Off64T;
36 struct __anonstruct_UWordPair_2 {   36 struct __anonstruct_UWordPair_2 {
37    UWord uw1 ;   37    UWord uw1 ;
38    UWord uw2 ;   38    UWord uw2 ;
39 };   39 };
40 typedef struct __anonstruct_UWordPair_2 UWordPair;   40 typedef struct __anonstruct_UWordPair_2 UWordPair;
41 typedef UInt ThreadId;   41 typedef UInt ThreadId;
42 struct __anonstruct_SysRes_3 {   42 struct __anonstruct_SysRes_3 {
43    UWord _val ;   43    UWord _val ;
44    UWord _valEx ;   44    UWord _valEx ;
45    Bool _isError ;   45    Bool _isError ;
46 };   46 };
47 typedef struct __anonstruct_SysRes_3 SysRes;   47 typedef struct __anonstruct_SysRes_3 SysRes;
48 enum __anonenum_IRType_4 {   48 enum __anonenum_IRType_4 {
49     Ity_INVALID = 69632,   49     Ity_INVALID = 69632,
50     Ity_I1 = 69633,   50     Ity_I1 = 69633,
51     Ity_I8 = 69634,   51     Ity_I8 = 69634,
52     Ity_I16 = 69635,   52     Ity_I16 = 69635,
53     Ity_I32 = 69636,   53     Ity_I32 = 69636,
54     Ity_I64 = 69637,   54     Ity_I64 = 69637,
55     Ity_I128 = 69638,   55     Ity_I128 = 69638,
56     Ity_F32 = 69639,   56     Ity_F32 = 69639,
57     Ity_F64 = 69640,   57     Ity_F64 = 69640,
58     Ity_D32 = 69641,   58     Ity_D32 = 69641,
59     Ity_D64 = 69642,   59     Ity_D64 = 69642,
60     Ity_D128 = 69643,   60     Ity_D128 = 69643,
61     Ity_F128 = 69644,   61     Ity_F128 = 69644,
62     Ity_V128 = 69645,   62     Ity_V128 = 69645,
63     Ity_V256 = 69646   63     Ity_V256 = 69646
64 } ;   64 } ;
65 typedef enum __anonenum_IRType_4 IRType;   65 typedef enum __anonenum_IRType_4 IRType;
66 enum __anonenum_IREndness_5 {   66 enum __anonenum_IREndness_5 {
67     Iend_LE = 73728,   67     Iend_LE = 73728,
68     Iend_BE = 73729   68     Iend_BE = 73729
69 } ;   69 } ;
70 typedef enum __anonenum_IREndness_5 IREndness;   70 typedef enum __anonenum_IREndness_5 IREndness;
71 enum __anonenum_IRConstTag_6 {   71 enum __anonenum_IRConstTag_6 {
72     Ico_U1 = 77824,   72     Ico_U1 = 77824,
73     Ico_U8 = 77825,   73     Ico_U8 = 77825,
74     Ico_U16 = 77826,   74     Ico_U16 = 77826,
75     Ico_U32 = 77827,   75     Ico_U32 = 77827,
76     Ico_U64 = 77828,   76     Ico_U64 = 77828,
77     Ico_F32 = 77829,   77     Ico_F32 = 77829,
78     Ico_F32i = 77830,   78     Ico_F32i = 77830,
79     Ico_F64 = 77831,   79     Ico_F64 = 77831,
80     Ico_F64i = 77832,   80     Ico_F64i = 77832,
81     Ico_V128 = 77833   81     Ico_V128 = 77833
82 } ;   82 } ;
83 typedef enum __anonenum_IRConstTag_6 IRConstTag;   83 typedef enum __anonenum_IRConstTag_6 IRConstTag;
84 union __anonunion_Ico_7 {   84 union __anonunion_Ico_7 {
85    Bool U1 ;   85    Bool U1 ;
86    UChar U8 ;   86    UChar U8 ;
87    UShort U16 ;   87    UShort U16 ;
88    UInt U32 ;   88    UInt U32 ;
89    ULong U64 ;   89    ULong U64 ;
90    Float F32 ;   90    Float F32 ;
91    UInt F32i ;   91    UInt F32i ;
92    Double F64 ;   92    Double F64 ;
93    ULong F64i ;   93    ULong F64i ;
94    UShort V128 ;   94    UShort V128 ;
95 };   95 };
96 struct _IRConst {   96 struct _IRConst {
97    IRConstTag tag ;   97    IRConstTag tag ;
98    union __anonunion_Ico_7 Ico ;   98    union __anonunion_Ico_7 Ico ;
99 };   99 };
100 typedef struct _IRConst IRConst;   100 typedef struct _IRConst IRConst;
101 struct __anonstruct_IRCallee_8 {   101 struct __anonstruct_IRCallee_8 {
102    Int regparms ;   102    Int regparms ;
103    HChar *name ;   103    HChar *name ;
104    void *addr ;   104    void *addr ;
105    UInt mcx_mask ;   105    UInt mcx_mask ;
106 };   106 };
107 typedef struct __anonstruct_IRCallee_8 IRCallee;   107 typedef struct __anonstruct_IRCallee_8 IRCallee;
108 struct __anonstruct_IRRegArray_9 {   108 struct __anonstruct_IRRegArray_9 {
109    Int base ;   109    Int base ;
110    IRType elemTy ;   110    IRType elemTy ;
111    Int nElems ;   111    Int nElems ;
112 };   112 };
113 typedef struct __anonstruct_IRRegArray_9 IRRegArray;   113 typedef struct __anonstruct_IRRegArray_9 IRRegArray;
114 typedef UInt IRTemp;   114 typedef UInt IRTemp;
115 enum __anonenum_IROp_10 {   115 enum __anonenum_IROp_10 {
116     Iop_INVALID = 81920,   116     Iop_INVALID = 81920,
117     Iop_Add8 = 81921,   117     Iop_Add8 = 81921,
118     Iop_Add16 = 81922,   118     Iop_Add16 = 81922,
119     Iop_Add32 = 81923,   119     Iop_Add32 = 81923,
120     Iop_Add64 = 81924,   120     Iop_Add64 = 81924,
121     Iop_Sub8 = 81925,   121     Iop_Sub8 = 81925,
122     Iop_Sub16 = 81926,   122     Iop_Sub16 = 81926,
123     Iop_Sub32 = 81927,   123     Iop_Sub32 = 81927,
124     Iop_Sub64 = 81928,   124     Iop_Sub64 = 81928,
125     Iop_Mul8 = 81929,   125     Iop_Mul8 = 81929,
126     Iop_Mul16 = 81930,   126     Iop_Mul16 = 81930,
127     Iop_Mul32 = 81931,   127     Iop_Mul32 = 81931,
128     Iop_Mul64 = 81932,   128     Iop_Mul64 = 81932,
129     Iop_Or8 = 81933,   129     Iop_Or8 = 81933,
130     Iop_Or16 = 81934,   130     Iop_Or16 = 81934,
131     Iop_Or32 = 81935,   131     Iop_Or32 = 81935,
132     Iop_Or64 = 81936,   132     Iop_Or64 = 81936,
133     Iop_And8 = 81937,   133     Iop_And8 = 81937,
134     Iop_And16 = 81938,   134     Iop_And16 = 81938,
135     Iop_And32 = 81939,   135     Iop_And32 = 81939,
136     Iop_And64 = 81940,   136     Iop_And64 = 81940,
137     Iop_Xor8 = 81941,   137     Iop_Xor8 = 81941,
138     Iop_Xor16 = 81942,   138     Iop_Xor16 = 81942,
139     Iop_Xor32 = 81943,   139     Iop_Xor32 = 81943,
140     Iop_Xor64 = 81944,   140     Iop_Xor64 = 81944,
141     Iop_Shl8 = 81945,   141     Iop_Shl8 = 81945,
142     Iop_Shl16 = 81946,   142     Iop_Shl16 = 81946,
143     Iop_Shl32 = 81947,   143     Iop_Shl32 = 81947,
144     Iop_Shl64 = 81948,   144     Iop_Shl64 = 81948,
145     Iop_Shr8 = 81949,   145     Iop_Shr8 = 81949,
146     Iop_Shr16 = 81950,   146     Iop_Shr16 = 81950,
147     Iop_Shr32 = 81951,   147     Iop_Shr32 = 81951,
148     Iop_Shr64 = 81952,   148     Iop_Shr64 = 81952,
149     Iop_Sar8 = 81953,   149     Iop_Sar8 = 81953,
150     Iop_Sar16 = 81954,   150     Iop_Sar16 = 81954,
151     Iop_Sar32 = 81955,   151     Iop_Sar32 = 81955,
152     Iop_Sar64 = 81956,   152     Iop_Sar64 = 81956,
153     Iop_CmpEQ8 = 81957,   153     Iop_CmpEQ8 = 81957,
154     Iop_CmpEQ16 = 81958,   154     Iop_CmpEQ16 = 81958,
155     Iop_CmpEQ32 = 81959,   155     Iop_CmpEQ32 = 81959,
156     Iop_CmpEQ64 = 81960,   156     Iop_CmpEQ64 = 81960,
157     Iop_CmpNE8 = 81961,   157     Iop_CmpNE8 = 81961,
158     Iop_CmpNE16 = 81962,   158     Iop_CmpNE16 = 81962,
159     Iop_CmpNE32 = 81963,   159     Iop_CmpNE32 = 81963,
160     Iop_CmpNE64 = 81964,   160     Iop_CmpNE64 = 81964,
161     Iop_Not8 = 81965,   161     Iop_Not8 = 81965,
162     Iop_Not16 = 81966,   162     Iop_Not16 = 81966,
163     Iop_Not32 = 81967,   163     Iop_Not32 = 81967,
164     Iop_Not64 = 81968,   164     Iop_Not64 = 81968,
165     Iop_CasCmpEQ8 = 81969,   165     Iop_CasCmpEQ8 = 81969,
166     Iop_CasCmpEQ16 = 81970,   166     Iop_CasCmpEQ16 = 81970,
167     Iop_CasCmpEQ32 = 81971,   167     Iop_CasCmpEQ32 = 81971,
168     Iop_CasCmpEQ64 = 81972,   168     Iop_CasCmpEQ64 = 81972,
169     Iop_CasCmpNE8 = 81973,   169     Iop_CasCmpNE8 = 81973,
170     Iop_CasCmpNE16 = 81974,   170     Iop_CasCmpNE16 = 81974,
171     Iop_CasCmpNE32 = 81975,   171     Iop_CasCmpNE32 = 81975,
172     Iop_CasCmpNE64 = 81976,   172     Iop_CasCmpNE64 = 81976,
173     Iop_MullS8 = 81977,   173     Iop_MullS8 = 81977,
174     Iop_MullS16 = 81978,   174     Iop_MullS16 = 81978,
175     Iop_MullS32 = 81979,   175     Iop_MullS32 = 81979,
176     Iop_MullS64 = 81980,   176     Iop_MullS64 = 81980,
177     Iop_MullU8 = 81981,   177     Iop_MullU8 = 81981,
178     Iop_MullU16 = 81982,   178     Iop_MullU16 = 81982,
179     Iop_MullU32 = 81983,   179     Iop_MullU32 = 81983,
180     Iop_MullU64 = 81984,   180     Iop_MullU64 = 81984,
181     Iop_Clz64 = 81985,   181     Iop_Clz64 = 81985,
182     Iop_Clz32 = 81986,   182     Iop_Clz32 = 81986,
183     Iop_Ctz64 = 81987,   183     Iop_Ctz64 = 81987,
184     Iop_Ctz32 = 81988,   184     Iop_Ctz32 = 81988,
185     Iop_CmpLT32S = 81989,   185     Iop_CmpLT32S = 81989,
186     Iop_CmpLT64S = 81990,   186     Iop_CmpLT64S = 81990,
187     Iop_CmpLE32S = 81991,   187     Iop_CmpLE32S = 81991,
188     Iop_CmpLE64S = 81992,   188     Iop_CmpLE64S = 81992,
189     Iop_CmpLT32U = 81993,   189     Iop_CmpLT32U = 81993,
190     Iop_CmpLT64U = 81994,   190     Iop_CmpLT64U = 81994,
191     Iop_CmpLE32U = 81995,   191     Iop_CmpLE32U = 81995,
192     Iop_CmpLE64U = 81996,   192     Iop_CmpLE64U = 81996,
193     Iop_CmpNEZ8 = 81997,   193     Iop_CmpNEZ8 = 81997,
194     Iop_CmpNEZ16 = 81998,   194     Iop_CmpNEZ16 = 81998,
195     Iop_CmpNEZ32 = 81999,   195     Iop_CmpNEZ32 = 81999,
196     Iop_CmpNEZ64 = 82000,   196     Iop_CmpNEZ64 = 82000,
197     Iop_CmpwNEZ32 = 82001,   197     Iop_CmpwNEZ32 = 82001,
198     Iop_CmpwNEZ64 = 82002,   198     Iop_CmpwNEZ64 = 82002,
199     Iop_Left8 = 82003,   199     Iop_Left8 = 82003,
200     Iop_Left16 = 82004,   200     Iop_Left16 = 82004,
201     Iop_Left32 = 82005,   201     Iop_Left32 = 82005,
202     Iop_Left64 = 82006,   202     Iop_Left64 = 82006,
203     Iop_Max32U = 82007,   203     Iop_Max32U = 82007,
204     Iop_CmpORD32U = 82008,   204     Iop_CmpORD32U = 82008,
205     Iop_CmpORD64U = 82009,   205     Iop_CmpORD64U = 82009,
206     Iop_CmpORD32S = 82010,   206     Iop_CmpORD32S = 82010,
207     Iop_CmpORD64S = 82011,   207     Iop_CmpORD64S = 82011,
208     Iop_DivU32 = 82012,   208     Iop_DivU32 = 82012,
209     Iop_DivS32 = 82013,   209     Iop_DivS32 = 82013,
210     Iop_DivU64 = 82014,   210     Iop_DivU64 = 82014,
211     Iop_DivS64 = 82015,   211     Iop_DivS64 = 82015,
212     Iop_DivU64E = 82016,   212     Iop_DivU64E = 82016,
213     Iop_DivS64E = 82017,   213     Iop_DivS64E = 82017,
214     Iop_DivU32E = 82018,   214     Iop_DivU32E = 82018,
215     Iop_DivS32E = 82019,   215     Iop_DivS32E = 82019,
216     Iop_DivModU64to32 = 82020,   216     Iop_DivModU64to32 = 82020,
217     Iop_DivModS64to32 = 82021,   217     Iop_DivModS64to32 = 82021,
218     Iop_DivModU128to64 = 82022,   218     Iop_DivModU128to64 = 82022,
219     Iop_DivModS128to64 = 82023,   219     Iop_DivModS128to64 = 82023,
220     Iop_DivModS64to64 = 82024,   220     Iop_DivModS64to64 = 82024,
221     Iop_8Uto16 = 82025,   221     Iop_8Uto16 = 82025,
222     Iop_8Uto32 = 82026,   222     Iop_8Uto32 = 82026,
223     Iop_8Uto64 = 82027,   223     Iop_8Uto64 = 82027,
224     Iop_16Uto32 = 82028,   224     Iop_16Uto32 = 82028,
225     Iop_16Uto64 = 82029,   225     Iop_16Uto64 = 82029,
226     Iop_32Uto64 = 82030,   226     Iop_32Uto64 = 82030,
227     Iop_8Sto16 = 82031,   227     Iop_8Sto16 = 82031,
228     Iop_8Sto32 = 82032,   228     Iop_8Sto32 = 82032,
229     Iop_8Sto64 = 82033,   229     Iop_8Sto64 = 82033,
230     Iop_16Sto32 = 82034,   230     Iop_16Sto32 = 82034,
231     Iop_16Sto64 = 82035,   231     Iop_16Sto64 = 82035,
232     Iop_32Sto64 = 82036,   232     Iop_32Sto64 = 82036,
233     Iop_64to8 = 82037,   233     Iop_64to8 = 82037,
234     Iop_32to8 = 82038,   234     Iop_32to8 = 82038,
235     Iop_64to16 = 82039,   235     Iop_64to16 = 82039,
236     Iop_16to8 = 82040,   236     Iop_16to8 = 82040,
237     Iop_16HIto8 = 82041,   237     Iop_16HIto8 = 82041,
238     Iop_8HLto16 = 82042,   238     Iop_8HLto16 = 82042,
239     Iop_32to16 = 82043,   239     Iop_32to16 = 82043,
240     Iop_32HIto16 = 82044,   240     Iop_32HIto16 = 82044,
241     Iop_16HLto32 = 82045,   241     Iop_16HLto32 = 82045,
242     Iop_64to32 = 82046,   242     Iop_64to32 = 82046,
243     Iop_64HIto32 = 82047,   243     Iop_64HIto32 = 82047,
244     Iop_32HLto64 = 82048,   244     Iop_32HLto64 = 82048,
245     Iop_128to64 = 82049,   245     Iop_128to64 = 82049,
246     Iop_128HIto64 = 82050,   246     Iop_128HIto64 = 82050,
247     Iop_64HLto128 = 82051,   247     Iop_64HLto128 = 82051,
248     Iop_Not1 = 82052,   248     Iop_Not1 = 82052,
249     Iop_32to1 = 82053,   249     Iop_32to1 = 82053,
250     Iop_64to1 = 82054,   250     Iop_64to1 = 82054,
251     Iop_1Uto8 = 82055,   251     Iop_1Uto8 = 82055,
252     Iop_1Uto32 = 82056,   252     Iop_1Uto32 = 82056,
253     Iop_1Uto64 = 82057,   253     Iop_1Uto64 = 82057,
254     Iop_1Sto8 = 82058,   254     Iop_1Sto8 = 82058,
255     Iop_1Sto16 = 82059,   255     Iop_1Sto16 = 82059,
256     Iop_1Sto32 = 82060,   256     Iop_1Sto32 = 82060,
257     Iop_1Sto64 = 82061,   257     Iop_1Sto64 = 82061,
258     Iop_AddF64 = 82062,   258     Iop_AddF64 = 82062,
259     Iop_SubF64 = 82063,   259     Iop_SubF64 = 82063,
260     Iop_MulF64 = 82064,   260     Iop_MulF64 = 82064,
261     Iop_DivF64 = 82065,   261     Iop_DivF64 = 82065,
262     Iop_AddF32 = 82066,   262     Iop_AddF32 = 82066,
263     Iop_SubF32 = 82067,   263     Iop_SubF32 = 82067,
264     Iop_MulF32 = 82068,   264     Iop_MulF32 = 82068,
265     Iop_DivF32 = 82069,   265     Iop_DivF32 = 82069,
266     Iop_AddF64r32 = 82070,   266     Iop_AddF64r32 = 82070,
267     Iop_SubF64r32 = 82071,   267     Iop_SubF64r32 = 82071,
268     Iop_MulF64r32 = 82072,   268     Iop_MulF64r32 = 82072,
269     Iop_DivF64r32 = 82073,   269     Iop_DivF64r32 = 82073,
270     Iop_NegF64 = 82074,   270     Iop_NegF64 = 82074,
271     Iop_AbsF64 = 82075,   271     Iop_AbsF64 = 82075,
272     Iop_NegF32 = 82076,   272     Iop_NegF32 = 82076,
273     Iop_AbsF32 = 82077,   273     Iop_AbsF32 = 82077,
274     Iop_SqrtF64 = 82078,   274     Iop_SqrtF64 = 82078,
275     Iop_SqrtF64r32 = 82079,   275     Iop_SqrtF64r32 = 82079,
276     Iop_SqrtF32 = 82080,   276     Iop_SqrtF32 = 82080,
277     Iop_CmpF64 = 82081,   277     Iop_CmpF64 = 82081,
278     Iop_CmpF32 = 82082,   278     Iop_CmpF32 = 82082,
279     Iop_CmpF128 = 82083,   279     Iop_CmpF128 = 82083,
280     Iop_F64toI16S = 82084,   280     Iop_F64toI16S = 82084,
281     Iop_F64toI32S = 82085,   281     Iop_F64toI32S = 82085,
282     Iop_F64toI64S = 82086,   282     Iop_F64toI64S = 82086,
283     Iop_F64toI64U = 82087,   283     Iop_F64toI64U = 82087,
284     Iop_F64toI32U = 82088,   284     Iop_F64toI32U = 82088,
285     Iop_I16StoF64 = 82089,   285     Iop_I16StoF64 = 82089,
286     Iop_I32StoF64 = 82090,   286     Iop_I32StoF64 = 82090,
287     Iop_I64StoF64 = 82091,   287     Iop_I64StoF64 = 82091,
288     Iop_I64UtoF64 = 82092,   288     Iop_I64UtoF64 = 82092,
289     Iop_I64UtoF32 = 82093,   289     Iop_I64UtoF32 = 82093,
290     Iop_I32UtoF64 = 82094,   290     Iop_I32UtoF64 = 82094,
291     Iop_F32toI16S = 82095,   291     Iop_F32toI16S = 82095,
292     Iop_F32toI32S = 82096,   292     Iop_F32toI32S = 82096,
293     Iop_F32toI64S = 82097,   293     Iop_F32toI64S = 82097,
294     Iop_I16StoF32 = 82098,   294     Iop_I16StoF32 = 82098,
295     Iop_I32StoF32 = 82099,   295     Iop_I32StoF32 = 82099,
296     Iop_I64StoF32 = 82100,   296     Iop_I64StoF32 = 82100,
297     Iop_F32toF64 = 82101,   297     Iop_F32toF64 = 82101,
298     Iop_F64toF32 = 82102,   298     Iop_F64toF32 = 82102,
299     Iop_ReinterpF64asI64 = 82103,   299     Iop_ReinterpF64asI64 = 82103,
300     Iop_ReinterpI64asF64 = 82104,   300     Iop_ReinterpI64asF64 = 82104,
301     Iop_ReinterpF32asI32 = 82105,   301     Iop_ReinterpF32asI32 = 82105,
302     Iop_ReinterpI32asF32 = 82106,   302     Iop_ReinterpI32asF32 = 82106,
303     Iop_F64HLtoF128 = 82107,   303     Iop_F64HLtoF128 = 82107,
304     Iop_F128HItoF64 = 82108,   304     Iop_F128HItoF64 = 82108,
305     Iop_F128LOtoF64 = 82109,   305     Iop_F128LOtoF64 = 82109,
306     Iop_AddF128 = 82110,   306     Iop_AddF128 = 82110,
307     Iop_SubF128 = 82111,   307     Iop_SubF128 = 82111,
308     Iop_MulF128 = 82112,   308     Iop_MulF128 = 82112,
309     Iop_DivF128 = 82113,   309     Iop_DivF128 = 82113,
310     Iop_NegF128 = 82114,   310     Iop_NegF128 = 82114,
311     Iop_AbsF128 = 82115,   311     Iop_AbsF128 = 82115,
312     Iop_SqrtF128 = 82116,   312     Iop_SqrtF128 = 82116,
313     Iop_I32StoF128 = 82117,   313     Iop_I32StoF128 = 82117,
314     Iop_I64StoF128 = 82118,   314     Iop_I64StoF128 = 82118,
315     Iop_F32toF128 = 82119,   315     Iop_F32toF128 = 82119,
316     Iop_F64toF128 = 82120,   316     Iop_F64toF128 = 82120,
317     Iop_F128toI32S = 82121,   317     Iop_F128toI32S = 82121,
318     Iop_F128toI64S = 82122,   318     Iop_F128toI64S = 82122,
319     Iop_F128toF64 = 82123,   319     Iop_F128toF64 = 82123,
320     Iop_F128toF32 = 82124,   320     Iop_F128toF32 = 82124,
321     Iop_AtanF64 = 82125,   321     Iop_AtanF64 = 82125,
322     Iop_Yl2xF64 = 82126,   322     Iop_Yl2xF64 = 82126,
323     Iop_Yl2xp1F64 = 82127,   323     Iop_Yl2xp1F64 = 82127,
324     Iop_PRemF64 = 82128,   324     Iop_PRemF64 = 82128,
325     Iop_PRemC3210F64 = 82129,   325     Iop_PRemC3210F64 = 82129,
326     Iop_PRem1F64 = 82130,   326     Iop_PRem1F64 = 82130,
327     Iop_PRem1C3210F64 = 82131,   327     Iop_PRem1C3210F64 = 82131,
328     Iop_ScaleF64 = 82132,   328     Iop_ScaleF64 = 82132,
329     Iop_SinF64 = 82133,   329     Iop_SinF64 = 82133,
330     Iop_CosF64 = 82134,   330     Iop_CosF64 = 82134,
331     Iop_TanF64 = 82135,   331     Iop_TanF64 = 82135,
332     Iop_2xm1F64 = 82136,   332     Iop_2xm1F64 = 82136,
333     Iop_RoundF64toInt = 82137,   333     Iop_RoundF64toInt = 82137,
334     Iop_RoundF32toInt = 82138,   334     Iop_RoundF32toInt = 82138,
335     Iop_MAddF32 = 82139,   335     Iop_MAddF32 = 82139,
336     Iop_MSubF32 = 82140,   336     Iop_MSubF32 = 82140,
337     Iop_MAddF64 = 82141,   337     Iop_MAddF64 = 82141,
338     Iop_MSubF64 = 82142,   338     Iop_MSubF64 = 82142,
339     Iop_MAddF64r32 = 82143,   339     Iop_MAddF64r32 = 82143,
340     Iop_MSubF64r32 = 82144,   340     Iop_MSubF64r32 = 82144,
341     Iop_Est5FRSqrt = 82145,   341     Iop_Est5FRSqrt = 82145,
342     Iop_RoundF64toF64_NEAREST = 82146,   342     Iop_RoundF64toF64_NEAREST = 82146,
343     Iop_RoundF64toF64_NegINF = 82147,   343     Iop_RoundF64toF64_NegINF = 82147,
344     Iop_RoundF64toF64_PosINF = 82148,   344     Iop_RoundF64toF64_PosINF = 82148,
345     Iop_RoundF64toF64_ZERO = 82149,   345     Iop_RoundF64toF64_ZERO = 82149,
346     Iop_TruncF64asF32 = 82150,   346     Iop_TruncF64asF32 = 82150,
347     Iop_RoundF64toF32 = 82151,   347     Iop_RoundF64toF32 = 82151,
348     Iop_CalcFPRF = 82152,   348     Iop_CalcFPRF = 82152,
349     Iop_Add16x2 = 82153,   349     Iop_Add16x2 = 82153,
350     Iop_Sub16x2 = 82154,   350     Iop_Sub16x2 = 82154,
351     Iop_QAdd16Sx2 = 82155,   351     Iop_QAdd16Sx2 = 82155,
352     Iop_QAdd16Ux2 = 82156,   352     Iop_QAdd16Ux2 = 82156,
353     Iop_QSub16Sx2 = 82157,   353     Iop_QSub16Sx2 = 82157,
354     Iop_QSub16Ux2 = 82158,   354     Iop_QSub16Ux2 = 82158,
355     Iop_HAdd16Ux2 = 82159,   355     Iop_HAdd16Ux2 = 82159,
356     Iop_HAdd16Sx2 = 82160,   356     Iop_HAdd16Sx2 = 82160,
357     Iop_HSub16Ux2 = 82161,   357     Iop_HSub16Ux2 = 82161,
358     Iop_HSub16Sx2 = 82162,   358     Iop_HSub16Sx2 = 82162,
359     Iop_Add8x4 = 82163,   359     Iop_Add8x4 = 82163,
360     Iop_Sub8x4 = 82164,   360     Iop_Sub8x4 = 82164,
361     Iop_QAdd8Sx4 = 82165,   361     Iop_QAdd8Sx4 = 82165,
362     Iop_QAdd8Ux4 = 82166,   362     Iop_QAdd8Ux4 = 82166,
363     Iop_QSub8Sx4 = 82167,   363     Iop_QSub8Sx4 = 82167,
364     Iop_QSub8Ux4 = 82168,   364     Iop_QSub8Ux4 = 82168,
365     Iop_HAdd8Ux4 = 82169,   365     Iop_HAdd8Ux4 = 82169,
366     Iop_HAdd8Sx4 = 82170,   366     Iop_HAdd8Sx4 = 82170,
367     Iop_HSub8Ux4 = 82171,   367     Iop_HSub8Ux4 = 82171,
368     Iop_HSub8Sx4 = 82172,   368     Iop_HSub8Sx4 = 82172,
369     Iop_Sad8Ux4 = 82173,   369     Iop_Sad8Ux4 = 82173,
370     Iop_CmpNEZ16x2 = 82174,   370     Iop_CmpNEZ16x2 = 82174,
371     Iop_CmpNEZ8x4 = 82175,   371     Iop_CmpNEZ8x4 = 82175,
372     Iop_I32UtoFx2 = 82176,   372     Iop_I32UtoFx2 = 82176,
373     Iop_I32StoFx2 = 82177,   373     Iop_I32StoFx2 = 82177,
374     Iop_FtoI32Ux2_RZ = 82178,   374     Iop_FtoI32Ux2_RZ = 82178,
375     Iop_FtoI32Sx2_RZ = 82179,   375     Iop_FtoI32Sx2_RZ = 82179,
376     Iop_F32ToFixed32Ux2_RZ = 82180,   376     Iop_F32ToFixed32Ux2_RZ = 82180,
377     Iop_F32ToFixed32Sx2_RZ = 82181,   377     Iop_F32ToFixed32Sx2_RZ = 82181,
378     Iop_Fixed32UToF32x2_RN = 82182,   378     Iop_Fixed32UToF32x2_RN = 82182,
379     Iop_Fixed32SToF32x2_RN = 82183,   379     Iop_Fixed32SToF32x2_RN = 82183,
380     Iop_Max32Fx2 = 82184,   380     Iop_Max32Fx2 = 82184,
381     Iop_Min32Fx2 = 82185,   381     Iop_Min32Fx2 = 82185,
382     Iop_PwMax32Fx2 = 82186,   382     Iop_PwMax32Fx2 = 82186,
383     Iop_PwMin32Fx2 = 82187,   383     Iop_PwMin32Fx2 = 82187,
384     Iop_CmpEQ32Fx2 = 82188,   384     Iop_CmpEQ32Fx2 = 82188,
385     Iop_CmpGT32Fx2 = 82189,   385     Iop_CmpGT32Fx2 = 82189,
386     Iop_CmpGE32Fx2 = 82190,   386     Iop_CmpGE32Fx2 = 82190,
387     Iop_Recip32Fx2 = 82191,   387     Iop_Recip32Fx2 = 82191,
388     Iop_Recps32Fx2 = 82192,   388     Iop_Recps32Fx2 = 82192,
389     Iop_Rsqrte32Fx2 = 82193,   389     Iop_Rsqrte32Fx2 = 82193,
390     Iop_Rsqrts32Fx2 = 82194,   390     Iop_Rsqrts32Fx2 = 82194,
391     Iop_Neg32Fx2 = 82195,   391     Iop_Neg32Fx2 = 82195,
392     Iop_Abs32Fx2 = 82196,   392     Iop_Abs32Fx2 = 82196,
393     Iop_CmpNEZ8x8 = 82197,   393     Iop_CmpNEZ8x8 = 82197,
394     Iop_CmpNEZ16x4 = 82198,   394     Iop_CmpNEZ16x4 = 82198,
395     Iop_CmpNEZ32x2 = 82199,   395     Iop_CmpNEZ32x2 = 82199,
396     Iop_Add8x8 = 82200,   396     Iop_Add8x8 = 82200,
397     Iop_Add16x4 = 82201,   397     Iop_Add16x4 = 82201,
398     Iop_Add32x2 = 82202,   398     Iop_Add32x2 = 82202,
399     Iop_QAdd8Ux8 = 82203,   399     Iop_QAdd8Ux8 = 82203,
400     Iop_QAdd16Ux4 = 82204,   400     Iop_QAdd16Ux4 = 82204,
401     Iop_QAdd32Ux2 = 82205,   401     Iop_QAdd32Ux2 = 82205,
402     Iop_QAdd64Ux1 = 82206,   402     Iop_QAdd64Ux1 = 82206,
403     Iop_QAdd8Sx8 = 82207,   403     Iop_QAdd8Sx8 = 82207,
404     Iop_QAdd16Sx4 = 82208,   404     Iop_QAdd16Sx4 = 82208,
405     Iop_QAdd32Sx2 = 82209,   405     Iop_QAdd32Sx2 = 82209,
406     Iop_QAdd64Sx1 = 82210,   406     Iop_QAdd64Sx1 = 82210,
407     Iop_PwAdd8x8 = 82211,   407     Iop_PwAdd8x8 = 82211,
408     Iop_PwAdd16x4 = 82212,   408     Iop_PwAdd16x4 = 82212,
409     Iop_PwAdd32x2 = 82213,   409     Iop_PwAdd32x2 = 82213,
410     Iop_PwMax8Sx8 = 82214,   410     Iop_PwMax8Sx8 = 82214,
411     Iop_PwMax16Sx4 = 82215,   411     Iop_PwMax16Sx4 = 82215,
412     Iop_PwMax32Sx2 = 82216,   412     Iop_PwMax32Sx2 = 82216,
413     Iop_PwMax8Ux8 = 82217,   413     Iop_PwMax8Ux8 = 82217,
414     Iop_PwMax16Ux4 = 82218,   414     Iop_PwMax16Ux4 = 82218,
415     Iop_PwMax32Ux2 = 82219,   415     Iop_PwMax32Ux2 = 82219,
416     Iop_PwMin8Sx8 = 82220,   416     Iop_PwMin8Sx8 = 82220,
417     Iop_PwMin16Sx4 = 82221,   417     Iop_PwMin16Sx4 = 82221,
418     Iop_PwMin32Sx2 = 82222,   418     Iop_PwMin32Sx2 = 82222,
419     Iop_PwMin8Ux8 = 82223,   419     Iop_PwMin8Ux8 = 82223,
420     Iop_PwMin16Ux4 = 82224,   420     Iop_PwMin16Ux4 = 82224,
421     Iop_PwMin32Ux2 = 82225,   421     Iop_PwMin32Ux2 = 82225,
422     Iop_PwAddL8Ux8 = 82226,   422     Iop_PwAddL8Ux8 = 82226,
423     Iop_PwAddL16Ux4 = 82227,   423     Iop_PwAddL16Ux4 = 82227,
424     Iop_PwAddL32Ux2 = 82228,   424     Iop_PwAddL32Ux2 = 82228,
425     Iop_PwAddL8Sx8 = 82229,   425     Iop_PwAddL8Sx8 = 82229,
426     Iop_PwAddL16Sx4 = 82230,   426     Iop_PwAddL16Sx4 = 82230,
427     Iop_PwAddL32Sx2 = 82231,   427     Iop_PwAddL32Sx2 = 82231,
428     Iop_Sub8x8 = 82232,   428     Iop_Sub8x8 = 82232,
429     Iop_Sub16x4 = 82233,   429     Iop_Sub16x4 = 82233,
430     Iop_Sub32x2 = 82234,   430     Iop_Sub32x2 = 82234,
431     Iop_QSub8Ux8 = 82235,   431     Iop_QSub8Ux8 = 82235,
432     Iop_QSub16Ux4 = 82236,   432     Iop_QSub16Ux4 = 82236,
433     Iop_QSub32Ux2 = 82237,   433     Iop_QSub32Ux2 = 82237,
434     Iop_QSub64Ux1 = 82238,   434     Iop_QSub64Ux1 = 82238,
435     Iop_QSub8Sx8 = 82239,   435     Iop_QSub8Sx8 = 82239,
436     Iop_QSub16Sx4 = 82240,   436     Iop_QSub16Sx4 = 82240,
437     Iop_QSub32Sx2 = 82241,   437     Iop_QSub32Sx2 = 82241,
438     Iop_QSub64Sx1 = 82242,   438     Iop_QSub64Sx1 = 82242,
439     Iop_Abs8x8 = 82243,   439     Iop_Abs8x8 = 82243,
440     Iop_Abs16x4 = 82244,   440     Iop_Abs16x4 = 82244,
441     Iop_Abs32x2 = 82245,   441     Iop_Abs32x2 = 82245,
442     Iop_Mul8x8 = 82246,   442     Iop_Mul8x8 = 82246,
443     Iop_Mul16x4 = 82247,   443     Iop_Mul16x4 = 82247,
444     Iop_Mul32x2 = 82248,   444     Iop_Mul32x2 = 82248,
445     Iop_Mul32Fx2 = 82249,   445     Iop_Mul32Fx2 = 82249,
446     Iop_MulHi16Ux4 = 82250,   446     Iop_MulHi16Ux4 = 82250,
447     Iop_MulHi16Sx4 = 82251,   447     Iop_MulHi16Sx4 = 82251,
448     Iop_PolynomialMul8x8 = 82252,   448     Iop_PolynomialMul8x8 = 82252,
449     Iop_QDMulHi16Sx4 = 82253,   449     Iop_QDMulHi16Sx4 = 82253,
450     Iop_QDMulHi32Sx2 = 82254,   450     Iop_QDMulHi32Sx2 = 82254,
451     Iop_QRDMulHi16Sx4 = 82255,   451     Iop_QRDMulHi16Sx4 = 82255,
452     Iop_QRDMulHi32Sx2 = 82256,   452     Iop_QRDMulHi32Sx2 = 82256,
453     Iop_Avg8Ux8 = 82257,   453     Iop_Avg8Ux8 = 82257,
454     Iop_Avg16Ux4 = 82258,   454     Iop_Avg16Ux4 = 82258,
455     Iop_Max8Sx8 = 82259,   455     Iop_Max8Sx8 = 82259,
456     Iop_Max16Sx4 = 82260,   456     Iop_Max16Sx4 = 82260,
457     Iop_Max32Sx2 = 82261,   457     Iop_Max32Sx2 = 82261,
458     Iop_Max8Ux8 = 82262,   458     Iop_Max8Ux8 = 82262,
459     Iop_Max16Ux4 = 82263,   459     Iop_Max16Ux4 = 82263,
460     Iop_Max32Ux2 = 82264,   460     Iop_Max32Ux2 = 82264,
461     Iop_Min8Sx8 = 82265,   461     Iop_Min8Sx8 = 82265,
462     Iop_Min16Sx4 = 82266,   462     Iop_Min16Sx4 = 82266,
463     Iop_Min32Sx2 = 82267,   463     Iop_Min32Sx2 = 82267,
464     Iop_Min8Ux8 = 82268,   464     Iop_Min8Ux8 = 82268,
465     Iop_Min16Ux4 = 82269,   465     Iop_Min16Ux4 = 82269,
466     Iop_Min32Ux2 = 82270,   466     Iop_Min32Ux2 = 82270,
467     Iop_CmpEQ8x8 = 82271,   467     Iop_CmpEQ8x8 = 82271,
468     Iop_CmpEQ16x4 = 82272,   468     Iop_CmpEQ16x4 = 82272,
469     Iop_CmpEQ32x2 = 82273,   469     Iop_CmpEQ32x2 = 82273,
470     Iop_CmpGT8Ux8 = 82274,   470     Iop_CmpGT8Ux8 = 82274,
471     Iop_CmpGT16Ux4 = 82275,   471     Iop_CmpGT16Ux4 = 82275,
472     Iop_CmpGT32Ux2 = 82276,   472     Iop_CmpGT32Ux2 = 82276,
473     Iop_CmpGT8Sx8 = 82277,   473     Iop_CmpGT8Sx8 = 82277,
474     Iop_CmpGT16Sx4 = 82278,   474     Iop_CmpGT16Sx4 = 82278,
475     Iop_CmpGT32Sx2 = 82279,   475     Iop_CmpGT32Sx2 = 82279,
476     Iop_Cnt8x8 = 82280,   476     Iop_Cnt8x8 = 82280,
477     Iop_Clz8Sx8 = 82281,   477     Iop_Clz8Sx8 = 82281,
478     Iop_Clz16Sx4 = 82282,   478     Iop_Clz16Sx4 = 82282,
479     Iop_Clz32Sx2 = 82283,   479     Iop_Clz32Sx2 = 82283,
480     Iop_Cls8Sx8 = 82284,   480     Iop_Cls8Sx8 = 82284,
481     Iop_Cls16Sx4 = 82285,   481     Iop_Cls16Sx4 = 82285,
482     Iop_Cls32Sx2 = 82286,   482     Iop_Cls32Sx2 = 82286,
483     Iop_Shl8x8 = 82287,   483     Iop_Shl8x8 = 82287,
484     Iop_Shl16x4 = 82288,   484     Iop_Shl16x4 = 82288,
485     Iop_Shl32x2 = 82289,   485     Iop_Shl32x2 = 82289,
486     Iop_Shr8x8 = 82290,   486     Iop_Shr8x8 = 82290,
487     Iop_Shr16x4 = 82291,   487     Iop_Shr16x4 = 82291,
488     Iop_Shr32x2 = 82292,   488     Iop_Shr32x2 = 82292,
489     Iop_Sar8x8 = 82293,   489     Iop_Sar8x8 = 82293,
490     Iop_Sar16x4 = 82294,   490     Iop_Sar16x4 = 82294,
491     Iop_Sar32x2 = 82295,   491     Iop_Sar32x2 = 82295,
492     Iop_Sal8x8 = 82296,   492     Iop_Sal8x8 = 82296,
493     Iop_Sal16x4 = 82297,   493     Iop_Sal16x4 = 82297,
494     Iop_Sal32x2 = 82298,   494     Iop_Sal32x2 = 82298,
495     Iop_Sal64x1 = 82299,   495     Iop_Sal64x1 = 82299,
496     Iop_ShlN8x8 = 82300,   496     Iop_ShlN8x8 = 82300,
497     Iop_ShlN16x4 = 82301,   497     Iop_ShlN16x4 = 82301,
498     Iop_ShlN32x2 = 82302,   498     Iop_ShlN32x2 = 82302,
499     Iop_ShrN8x8 = 82303,   499     Iop_ShrN8x8 = 82303,
500     Iop_ShrN16x4 = 82304,   500     Iop_ShrN16x4 = 82304,
501     Iop_ShrN32x2 = 82305,   501     Iop_ShrN32x2 = 82305,
502     Iop_SarN8x8 = 82306,   502     Iop_SarN8x8 = 82306,
503     Iop_SarN16x4 = 82307,   503     Iop_SarN16x4 = 82307,
504     Iop_SarN32x2 = 82308,   504     Iop_SarN32x2 = 82308,
505     Iop_QShl8x8 = 82309,   505     Iop_QShl8x8 = 82309,
506     Iop_QShl16x4 = 82310,   506     Iop_QShl16x4 = 82310,
507     Iop_QShl32x2 = 82311,   507     Iop_QShl32x2 = 82311,
508     Iop_QShl64x1 = 82312,   508     Iop_QShl64x1 = 82312,
509     Iop_QSal8x8 = 82313,   509     Iop_QSal8x8 = 82313,
510     Iop_QSal16x4 = 82314,   510     Iop_QSal16x4 = 82314,
511     Iop_QSal32x2 = 82315,   511     Iop_QSal32x2 = 82315,
512     Iop_QSal64x1 = 82316,   512     Iop_QSal64x1 = 82316,
513     Iop_QShlN8Sx8 = 82317,   513     Iop_QShlN8Sx8 = 82317,
514     Iop_QShlN16Sx4 = 82318,   514     Iop_QShlN16Sx4 = 82318,
515     Iop_QShlN32Sx2 = 82319,   515     Iop_QShlN32Sx2 = 82319,
516     Iop_QShlN64Sx1 = 82320,   516     Iop_QShlN64Sx1 = 82320,
517     Iop_QShlN8x8 = 82321,   517     Iop_QShlN8x8 = 82321,
518     Iop_QShlN16x4 = 82322,   518     Iop_QShlN16x4 = 82322,
519     Iop_QShlN32x2 = 82323,   519     Iop_QShlN32x2 = 82323,
520     Iop_QShlN64x1 = 82324,   520     Iop_QShlN64x1 = 82324,
521     Iop_QSalN8x8 = 82325,   521     Iop_QSalN8x8 = 82325,
522     Iop_QSalN16x4 = 82326,   522     Iop_QSalN16x4 = 82326,
523     Iop_QSalN32x2 = 82327,   523     Iop_QSalN32x2 = 82327,
524     Iop_QSalN64x1 = 82328,   524     Iop_QSalN64x1 = 82328,
525     Iop_QNarrowBin16Sto8Ux8 = 82329,   525     Iop_QNarrowBin16Sto8Ux8 = 82329,
526     Iop_QNarrowBin16Sto8Sx8 = 82330,   526     Iop_QNarrowBin16Sto8Sx8 = 82330,
527     Iop_QNarrowBin32Sto16Sx4 = 82331,   527     Iop_QNarrowBin32Sto16Sx4 = 82331,
528     Iop_NarrowBin16to8x8 = 82332,   528     Iop_NarrowBin16to8x8 = 82332,
529     Iop_NarrowBin32to16x4 = 82333,   529     Iop_NarrowBin32to16x4 = 82333,
530     Iop_InterleaveHI8x8 = 82334,   530     Iop_InterleaveHI8x8 = 82334,
531     Iop_InterleaveHI16x4 = 82335,   531     Iop_InterleaveHI16x4 = 82335,
532     Iop_InterleaveHI32x2 = 82336,   532     Iop_InterleaveHI32x2 = 82336,
533     Iop_InterleaveLO8x8 = 82337,   533     Iop_InterleaveLO8x8 = 82337,
534     Iop_InterleaveLO16x4 = 82338,   534     Iop_InterleaveLO16x4 = 82338,
535     Iop_InterleaveLO32x2 = 82339,   535     Iop_InterleaveLO32x2 = 82339,
536     Iop_InterleaveOddLanes8x8 = 82340,   536     Iop_InterleaveOddLanes8x8 = 82340,
537     Iop_InterleaveEvenLanes8x8 = 82341,   537     Iop_InterleaveEvenLanes8x8 = 82341,
538     Iop_InterleaveOddLanes16x4 = 82342,   538     Iop_InterleaveOddLanes16x4 = 82342,
539     Iop_InterleaveEvenLanes16x4 = 82343,   539     Iop_InterleaveEvenLanes16x4 = 82343,
540     Iop_CatOddLanes8x8 = 82344,   540     Iop_CatOddLanes8x8 = 82344,
541     Iop_CatOddLanes16x4 = 82345,   541     Iop_CatOddLanes16x4 = 82345,
542     Iop_CatEvenLanes8x8 = 82346,   542     Iop_CatEvenLanes8x8 = 82346,
543     Iop_CatEvenLanes16x4 = 82347,   543     Iop_CatEvenLanes16x4 = 82347,
544     Iop_GetElem8x8 = 82348,   544     Iop_GetElem8x8 = 82348,
545     Iop_GetElem16x4 = 82349,   545     Iop_GetElem16x4 = 82349,
546     Iop_GetElem32x2 = 82350,   546     Iop_GetElem32x2 = 82350,
547     Iop_SetElem8x8 = 82351,   547     Iop_SetElem8x8 = 82351,
548     Iop_SetElem16x4 = 82352,   548     Iop_SetElem16x4 = 82352,
549     Iop_SetElem32x2 = 82353,   549     Iop_SetElem32x2 = 82353,
550     Iop_Dup8x8 = 82354,   550     Iop_Dup8x8 = 82354,
551     Iop_Dup16x4 = 82355,   551     Iop_Dup16x4 = 82355,
552     Iop_Dup32x2 = 82356,   552     Iop_Dup32x2 = 82356,
553     Iop_Extract64 = 82357,   553     Iop_Extract64 = 82357,
554     Iop_Reverse16_8x8 = 82358,   554     Iop_Reverse16_8x8 = 82358,
555     Iop_Reverse32_8x8 = 82359,   555     Iop_Reverse32_8x8 = 82359,
556     Iop_Reverse32_16x4 = 82360,   556     Iop_Reverse32_16x4 = 82360,
557     Iop_Reverse64_8x8 = 82361,   557     Iop_Reverse64_8x8 = 82361,
558     Iop_Reverse64_16x4 = 82362,   558     Iop_Reverse64_16x4 = 82362,
559     Iop_Reverse64_32x2 = 82363,   559     Iop_Reverse64_32x2 = 82363,
560     Iop_Perm8x8 = 82364,   560     Iop_Perm8x8 = 82364,
561     Iop_Recip32x2 = 82365,   561     Iop_Recip32x2 = 82365,
562     Iop_Rsqrte32x2 = 82366,   562     Iop_Rsqrte32x2 = 82366,
563     Iop_AddD64 = 82367,   563     Iop_AddD64 = 82367,
564     Iop_SubD64 = 82368,   564     Iop_SubD64 = 82368,
565     Iop_MulD64 = 82369,   565     Iop_MulD64 = 82369,
566     Iop_DivD64 = 82370,   566     Iop_DivD64 = 82370,
567     Iop_AddD128 = 82371,   567     Iop_AddD128 = 82371,
568     Iop_SubD128 = 82372,   568     Iop_SubD128 = 82372,
569     Iop_MulD128 = 82373,   569     Iop_MulD128 = 82373,
570     Iop_DivD128 = 82374,   570     Iop_DivD128 = 82374,
571     Iop_ShlD64 = 82375,   571     Iop_ShlD64 = 82375,
572     Iop_ShrD64 = 82376,   572     Iop_ShrD64 = 82376,
573     Iop_ShlD128 = 82377,   573     Iop_ShlD128 = 82377,
574     Iop_ShrD128 = 82378,   574     Iop_ShrD128 = 82378,
575     Iop_D32toD64 = 82379,   575     Iop_D32toD64 = 82379,
576     Iop_D64toD128 = 82380,   576     Iop_D64toD128 = 82380,
577     Iop_I64StoD128 = 82381,   577     Iop_I64StoD128 = 82381,
578     Iop_D64toD32 = 82382,   578     Iop_D64toD32 = 82382,
579     Iop_D128toD64 = 82383,   579     Iop_D128toD64 = 82383,
580     Iop_I64StoD64 = 82384,   580     Iop_I64StoD64 = 82384,
581     Iop_D64toI64S = 82385,   581     Iop_D64toI64S = 82385,
582     Iop_D128toI64S = 82386,   582     Iop_D128toI64S = 82386,
583     Iop_RoundD64toInt = 82387,   583     Iop_RoundD64toInt = 82387,
584     Iop_RoundD128toInt = 82388,   584     Iop_RoundD128toInt = 82388,
585     Iop_CmpD64 = 82389,   585     Iop_CmpD64 = 82389,
586     Iop_CmpD128 = 82390,   586     Iop_CmpD128 = 82390,
587     Iop_QuantizeD64 = 82391,   587     Iop_QuantizeD64 = 82391,
588     Iop_QuantizeD128 = 82392,   588     Iop_QuantizeD128 = 82392,
589     Iop_SignificanceRoundD64 = 82393,   589     Iop_SignificanceRoundD64 = 82393,
590     Iop_SignificanceRoundD128 = 82394,   590     Iop_SignificanceRoundD128 = 82394,
591     Iop_ExtractExpD64 = 82395,   591     Iop_ExtractExpD64 = 82395,
592     Iop_ExtractExpD128 = 82396,   592     Iop_ExtractExpD128 = 82396,
593     Iop_InsertExpD64 = 82397,   593     Iop_InsertExpD64 = 82397,
594     Iop_InsertExpD128 = 82398,   594     Iop_InsertExpD128 = 82398,
595     Iop_D64HLtoD128 = 82399,   595     Iop_D64HLtoD128 = 82399,
596     Iop_D128HItoD64 = 82400,   596     Iop_D128HItoD64 = 82400,
597     Iop_D128LOtoD64 = 82401,   597     Iop_D128LOtoD64 = 82401,
598     Iop_DPBtoBCD = 82402,   598     Iop_DPBtoBCD = 82402,
599     Iop_BCDtoDPB = 82403,   599     Iop_BCDtoDPB = 82403,
600     Iop_ReinterpI64asD64 = 82404,   600     Iop_ReinterpI64asD64 = 82404,
601     Iop_ReinterpD64asI64 = 82405,   601     Iop_ReinterpD64asI64 = 82405,
602     Iop_Add32Fx4 = 82406,   602     Iop_Add32Fx4 = 82406,
603     Iop_Sub32Fx4 = 82407,   603     Iop_Sub32Fx4 = 82407,
604     Iop_Mul32Fx4 = 82408,   604     Iop_Mul32Fx4 = 82408,
605     Iop_Div32Fx4 = 82409,   605     Iop_Div32Fx4 = 82409,
606     Iop_Max32Fx4 = 82410,   606     Iop_Max32Fx4 = 82410,
607     Iop_Min32Fx4 = 82411,   607     Iop_Min32Fx4 = 82411,
608     Iop_Add32Fx2 = 82412,   608     Iop_Add32Fx2 = 82412,
609     Iop_Sub32Fx2 = 82413,   609     Iop_Sub32Fx2 = 82413,
610     Iop_CmpEQ32Fx4 = 82414,   610     Iop_CmpEQ32Fx4 = 82414,
611     Iop_CmpLT32Fx4 = 82415,   611     Iop_CmpLT32Fx4 = 82415,
612     Iop_CmpLE32Fx4 = 82416,   612     Iop_CmpLE32Fx4 = 82416,
613     Iop_CmpUN32Fx4 = 82417,   613     Iop_CmpUN32Fx4 = 82417,
614     Iop_CmpGT32Fx4 = 82418,   614     Iop_CmpGT32Fx4 = 82418,
615     Iop_CmpGE32Fx4 = 82419,   615     Iop_CmpGE32Fx4 = 82419,
616     Iop_Abs32Fx4 = 82420,   616     Iop_Abs32Fx4 = 82420,
617     Iop_PwMax32Fx4 = 82421,   617     Iop_PwMax32Fx4 = 82421,
618     Iop_PwMin32Fx4 = 82422,   618     Iop_PwMin32Fx4 = 82422,
619     Iop_Sqrt32Fx4 = 82423,   619     Iop_Sqrt32Fx4 = 82423,
620     Iop_RSqrt32Fx4 = 82424,   620     Iop_RSqrt32Fx4 = 82424,
621     Iop_Neg32Fx4 = 82425,   621     Iop_Neg32Fx4 = 82425,
622     Iop_Recip32Fx4 = 82426,   622     Iop_Recip32Fx4 = 82426,
623     Iop_Recps32Fx4 = 82427,   623     Iop_Recps32Fx4 = 82427,
624     Iop_Rsqrte32Fx4 = 82428,   624     Iop_Rsqrte32Fx4 = 82428,
625     Iop_Rsqrts32Fx4 = 82429,   625     Iop_Rsqrts32Fx4 = 82429,
626     Iop_I32UtoFx4 = 82430,   626     Iop_I32UtoFx4 = 82430,
627     Iop_I32StoFx4 = 82431,   627     Iop_I32StoFx4 = 82431,
628     Iop_FtoI32Ux4_RZ = 82432,   628     Iop_FtoI32Ux4_RZ = 82432,
629     Iop_FtoI32Sx4_RZ = 82433,   629     Iop_FtoI32Sx4_RZ = 82433,
630     Iop_QFtoI32Ux4_RZ = 82434,   630     Iop_QFtoI32Ux4_RZ = 82434,
631     Iop_QFtoI32Sx4_RZ = 82435,   631     Iop_QFtoI32Sx4_RZ = 82435,
632     Iop_RoundF32x4_RM = 82436,   632     Iop_RoundF32x4_RM = 82436,
633     Iop_RoundF32x4_RP = 82437,   633     Iop_RoundF32x4_RP = 82437,
634     Iop_RoundF32x4_RN = 82438,   634     Iop_RoundF32x4_RN = 82438,
635     Iop_RoundF32x4_RZ = 82439,   635     Iop_RoundF32x4_RZ = 82439,
636     Iop_F32ToFixed32Ux4_RZ = 82440,   636     Iop_F32ToFixed32Ux4_RZ = 82440,
637     Iop_F32ToFixed32Sx4_RZ = 82441,   637     Iop_F32ToFixed32Sx4_RZ = 82441,
638     Iop_Fixed32UToF32x4_RN = 82442,   638     Iop_Fixed32UToF32x4_RN = 82442,
639     Iop_Fixed32SToF32x4_RN = 82443,   639     Iop_Fixed32SToF32x4_RN = 82443,
640     Iop_F32toF16x4 = 82444,   640     Iop_F32toF16x4 = 82444,
641     Iop_F16toF32x4 = 82445,   641     Iop_F16toF32x4 = 82445,
642     Iop_Add32F0x4 = 82446,   642     Iop_Add32F0x4 = 82446,
643     Iop_Sub32F0x4 = 82447,   643     Iop_Sub32F0x4 = 82447,
644     Iop_Mul32F0x4 = 82448,   644     Iop_Mul32F0x4 = 82448,
645     Iop_Div32F0x4 = 82449,   645     Iop_Div32F0x4 = 82449,
646     Iop_Max32F0x4 = 82450,   646     Iop_Max32F0x4 = 82450,
647     Iop_Min32F0x4 = 82451,   647     Iop_Min32F0x4 = 82451,
648     Iop_CmpEQ32F0x4 = 82452,   648     Iop_CmpEQ32F0x4 = 82452,
649     Iop_CmpLT32F0x4 = 82453,   649     Iop_CmpLT32F0x4 = 82453,
650     Iop_CmpLE32F0x4 = 82454,   650     Iop_CmpLE32F0x4 = 82454,
651     Iop_CmpUN32F0x4 = 82455,   651     Iop_CmpUN32F0x4 = 82455,
652     Iop_Recip32F0x4 = 82456,   652     Iop_Recip32F0x4 = 82456,
653     Iop_Sqrt32F0x4 = 82457,   653     Iop_Sqrt32F0x4 = 82457,
654     Iop_RSqrt32F0x4 = 82458,   654     Iop_RSqrt32F0x4 = 82458,
655     Iop_Add64Fx2 = 82459,   655     Iop_Add64Fx2 = 82459,
656     Iop_Sub64Fx2 = 82460,   656     Iop_Sub64Fx2 = 82460,
657     Iop_Mul64Fx2 = 82461,   657     Iop_Mul64Fx2 = 82461,
658     Iop_Div64Fx2 = 82462,   658     Iop_Div64Fx2 = 82462,
659     Iop_Max64Fx2 = 82463,   659     Iop_Max64Fx2 = 82463,
660     Iop_Min64Fx2 = 82464,   660     Iop_Min64Fx2 = 82464,
661     Iop_CmpEQ64Fx2 = 82465,   661     Iop_CmpEQ64Fx2 = 82465,
662     Iop_CmpLT64Fx2 = 82466,   662     Iop_CmpLT64Fx2 = 82466,
663     Iop_CmpLE64Fx2 = 82467,   663     Iop_CmpLE64Fx2 = 82467,
664     Iop_CmpUN64Fx2 = 82468,   664     Iop_CmpUN64Fx2 = 82468,
665     Iop_Recip64Fx2 = 82469,   665     Iop_Recip64Fx2 = 82469,
666     Iop_Sqrt64Fx2 = 82470,   666     Iop_Sqrt64Fx2 = 82470,
667     Iop_RSqrt64Fx2 = 82471,   667     Iop_RSqrt64Fx2 = 82471,
668     Iop_Add64F0x2 = 82472,   668     Iop_Add64F0x2 = 82472,
669     Iop_Sub64F0x2 = 82473,   669     Iop_Sub64F0x2 = 82473,
670     Iop_Mul64F0x2 = 82474,   670     Iop_Mul64F0x2 = 82474,
671     Iop_Div64F0x2 = 82475,   671     Iop_Div64F0x2 = 82475,
672     Iop_Max64F0x2 = 82476,   672     Iop_Max64F0x2 = 82476,
673     Iop_Min64F0x2 = 82477,   673     Iop_Min64F0x2 = 82477,
674     Iop_CmpEQ64F0x2 = 82478,   674     Iop_CmpEQ64F0x2 = 82478,
675     Iop_CmpLT64F0x2 = 82479,   675     Iop_CmpLT64F0x2 = 82479,
676     Iop_CmpLE64F0x2 = 82480,   676     Iop_CmpLE64F0x2 = 82480,
677     Iop_CmpUN64F0x2 = 82481,   677     Iop_CmpUN64F0x2 = 82481,
678     Iop_Recip64F0x2 = 82482,   678     Iop_Recip64F0x2 = 82482,
679     Iop_Sqrt64F0x2 = 82483,   679     Iop_Sqrt64F0x2 = 82483,
680     Iop_RSqrt64F0x2 = 82484,   680     Iop_RSqrt64F0x2 = 82484,
681     Iop_V128to64 = 82485,   681     Iop_V128to64 = 82485,
682     Iop_V128HIto64 = 82486,   682     Iop_V128HIto64 = 82486,
683     Iop_64HLtoV128 = 82487,   683     Iop_64HLtoV128 = 82487,
684     Iop_64UtoV128 = 82488,   684     Iop_64UtoV128 = 82488,
685     Iop_SetV128lo64 = 82489,   685     Iop_SetV128lo64 = 82489,
686     Iop_32UtoV128 = 82490,   686     Iop_32UtoV128 = 82490,
687     Iop_V128to32 = 82491,   687     Iop_V128to32 = 82491,
688     Iop_SetV128lo32 = 82492,   688     Iop_SetV128lo32 = 82492,
689     Iop_NotV128 = 82493,   689     Iop_NotV128 = 82493,
690     Iop_AndV128 = 82494,   690     Iop_AndV128 = 82494,
691     Iop_OrV128 = 82495,   691     Iop_OrV128 = 82495,
692     Iop_XorV128 = 82496,   692     Iop_XorV128 = 82496,
693     Iop_ShlV128 = 82497,   693     Iop_ShlV128 = 82497,
694     Iop_ShrV128 = 82498,   694     Iop_ShrV128 = 82498,
695     Iop_CmpNEZ8x16 = 82499,   695     Iop_CmpNEZ8x16 = 82499,
696     Iop_CmpNEZ16x8 = 82500,   696     Iop_CmpNEZ16x8 = 82500,
697     Iop_CmpNEZ32x4 = 82501,   697     Iop_CmpNEZ32x4 = 82501,
698     Iop_CmpNEZ64x2 = 82502,   698     Iop_CmpNEZ64x2 = 82502,
699     Iop_Add8x16 = 82503,   699     Iop_Add8x16 = 82503,
700     Iop_Add16x8 = 82504,   700     Iop_Add16x8 = 82504,
701     Iop_Add32x4 = 82505,   701     Iop_Add32x4 = 82505,
702     Iop_Add64x2 = 82506,   702     Iop_Add64x2 = 82506,
703     Iop_QAdd8Ux16 = 82507,   703     Iop_QAdd8Ux16 = 82507,
704     Iop_QAdd16Ux8 = 82508,   704     Iop_QAdd16Ux8 = 82508,
705     Iop_QAdd32Ux4 = 82509,   705     Iop_QAdd32Ux4 = 82509,
706     Iop_QAdd64Ux2 = 82510,   706     Iop_QAdd64Ux2 = 82510,
707     Iop_QAdd8Sx16 = 82511,   707     Iop_QAdd8Sx16 = 82511,
708     Iop_QAdd16Sx8 = 82512,   708     Iop_QAdd16Sx8 = 82512,
709     Iop_QAdd32Sx4 = 82513,   709     Iop_QAdd32Sx4 = 82513,
710     Iop_QAdd64Sx2 = 82514,   710     Iop_QAdd64Sx2 = 82514,
711     Iop_Sub8x16 = 82515,   711     Iop_Sub8x16 = 82515,
712     Iop_Sub16x8 = 82516,   712     Iop_Sub16x8 = 82516,
713     Iop_Sub32x4 = 82517,   713     Iop_Sub32x4 = 82517,
714     Iop_Sub64x2 = 82518,   714     Iop_Sub64x2 = 82518,
715     Iop_QSub8Ux16 = 82519,   715     Iop_QSub8Ux16 = 82519,
716     Iop_QSub16Ux8 = 82520,   716     Iop_QSub16Ux8 = 82520,
717     Iop_QSub32Ux4 = 82521,   717     Iop_QSub32Ux4 = 82521,
718     Iop_QSub64Ux2 = 82522,   718     Iop_QSub64Ux2 = 82522,
719     Iop_QSub8Sx16 = 82523,   719     Iop_QSub8Sx16 = 82523,
720     Iop_QSub16Sx8 = 82524,   720     Iop_QSub16Sx8 = 82524,
721     Iop_QSub32Sx4 = 82525,   721     Iop_QSub32Sx4 = 82525,
722     Iop_QSub64Sx2 = 82526,   722     Iop_QSub64Sx2 = 82526,
723     Iop_Mul8x16 = 82527,   723     Iop_Mul8x16 = 82527,
724     Iop_Mul16x8 = 82528,   724     Iop_Mul16x8 = 82528,
725     Iop_Mul32x4 = 82529,   725     Iop_Mul32x4 = 82529,
726     Iop_MulHi16Ux8 = 82530,   726     Iop_MulHi16Ux8 = 82530,
727     Iop_MulHi32Ux4 = 82531,   727     Iop_MulHi32Ux4 = 82531,
728     Iop_MulHi16Sx8 = 82532,   728     Iop_MulHi16Sx8 = 82532,
729     Iop_MulHi32Sx4 = 82533,   729     Iop_MulHi32Sx4 = 82533,
730     Iop_MullEven8Ux16 = 82534,   730     Iop_MullEven8Ux16 = 82534,
731     Iop_MullEven16Ux8 = 82535,   731     Iop_MullEven16Ux8 = 82535,
732     Iop_MullEven8Sx16 = 82536,   732     Iop_MullEven8Sx16 = 82536,
733     Iop_MullEven16Sx8 = 82537,   733     Iop_MullEven16Sx8 = 82537,
734     Iop_Mull8Ux8 = 82538,   734     Iop_Mull8Ux8 = 82538,
735     Iop_Mull8Sx8 = 82539,   735     Iop_Mull8Sx8 = 82539,
736     Iop_Mull16Ux4 = 82540,   736     Iop_Mull16Ux4 = 82540,
737     Iop_Mull16Sx4 = 82541,   737     Iop_Mull16Sx4 = 82541,
738     Iop_Mull32Ux2 = 82542,   738     Iop_Mull32Ux2 = 82542,
739     Iop_Mull32Sx2 = 82543,   739     Iop_Mull32Sx2 = 82543,
740     Iop_QDMulHi16Sx8 = 82544,   740     Iop_QDMulHi16Sx8 = 82544,
741     Iop_QDMulHi32Sx4 = 82545,   741     Iop_QDMulHi32Sx4 = 82545,
742     Iop_QRDMulHi16Sx8 = 82546,   742     Iop_QRDMulHi16Sx8 = 82546,
743     Iop_QRDMulHi32Sx4 = 82547,   743     Iop_QRDMulHi32Sx4 = 82547,
744     Iop_QDMulLong16Sx4 = 82548,   744     Iop_QDMulLong16Sx4 = 82548,
745     Iop_QDMulLong32Sx2 = 82549,   745     Iop_QDMulLong32Sx2 = 82549,
746     Iop_PolynomialMul8x16 = 82550,   746     Iop_PolynomialMul8x16 = 82550,
747     Iop_PolynomialMull8x8 = 82551,   747     Iop_PolynomialMull8x8 = 82551,
748     Iop_PwAdd8x16 = 82552,   748     Iop_PwAdd8x16 = 82552,
749     Iop_PwAdd16x8 = 82553,   749     Iop_PwAdd16x8 = 82553,
750     Iop_PwAdd32x4 = 82554,   750     Iop_PwAdd32x4 = 82554,
751     Iop_PwAdd32Fx2 = 82555,   751     Iop_PwAdd32Fx2 = 82555,
752     Iop_PwAddL8Ux16 = 82556,   752     Iop_PwAddL8Ux16 = 82556,
753     Iop_PwAddL16Ux8 = 82557,   753     Iop_PwAddL16Ux8 = 82557,
754     Iop_PwAddL32Ux4 = 82558,   754     Iop_PwAddL32Ux4 = 82558,
755     Iop_PwAddL8Sx16 = 82559,   755     Iop_PwAddL8Sx16 = 82559,
756     Iop_PwAddL16Sx8 = 82560,   756     Iop_PwAddL16Sx8 = 82560,
757     Iop_PwAddL32Sx4 = 82561,   757     Iop_PwAddL32Sx4 = 82561,
758     Iop_Abs8x16 = 82562,   758     Iop_Abs8x16 = 82562,
759     Iop_Abs16x8 = 82563,   759     Iop_Abs16x8 = 82563,
760     Iop_Abs32x4 = 82564,   760     Iop_Abs32x4 = 82564,
761     Iop_Avg8Ux16 = 82565,   761     Iop_Avg8Ux16 = 82565,
762     Iop_Avg16Ux8 = 82566,   762     Iop_Avg16Ux8 = 82566,
763     Iop_Avg32Ux4 = 82567,   763     Iop_Avg32Ux4 = 82567,
764     Iop_Avg8Sx16 = 82568,   764     Iop_Avg8Sx16 = 82568,
765     Iop_Avg16Sx8 = 82569,   765     Iop_Avg16Sx8 = 82569,
766     Iop_Avg32Sx4 = 82570,   766     Iop_Avg32Sx4 = 82570,
767     Iop_Max8Sx16 = 82571,   767     Iop_Max8Sx16 = 82571,
768     Iop_Max16Sx8 = 82572,   768     Iop_Max16Sx8 = 82572,
769     Iop_Max32Sx4 = 82573,   769     Iop_Max32Sx4 = 82573,
770     Iop_Max8Ux16 = 82574,   770     Iop_Max8Ux16 = 82574,
771     Iop_Max16Ux8 = 82575,   771     Iop_Max16Ux8 = 82575,
772     Iop_Max32Ux4 = 82576,   772     Iop_Max32Ux4 = 82576,
773     Iop_Min8Sx16 = 82577,   773     Iop_Min8Sx16 = 82577,
774     Iop_Min16Sx8 = 82578,   774     Iop_Min16Sx8 = 82578,
775     Iop_Min32Sx4 = 82579,   775     Iop_Min32Sx4 = 82579,
776     Iop_Min8Ux16 = 82580,   776     Iop_Min8Ux16 = 82580,
777     Iop_Min16Ux8 = 82581,   777     Iop_Min16Ux8 = 82581,
778     Iop_Min32Ux4 = 82582,   778     Iop_Min32Ux4 = 82582,
779     Iop_CmpEQ8x16 = 82583,   779     Iop_CmpEQ8x16 = 82583,
780     Iop_CmpEQ16x8 = 82584,   780     Iop_CmpEQ16x8 = 82584,
781     Iop_CmpEQ32x4 = 82585,   781     Iop_CmpEQ32x4 = 82585,
782     Iop_CmpEQ64x2 = 82586,   782     Iop_CmpEQ64x2 = 82586,
783     Iop_CmpGT8Sx16 = 82587,   783     Iop_CmpGT8Sx16 = 82587,
784     Iop_CmpGT16Sx8 = 82588,   784     Iop_CmpGT16Sx8 = 82588,
785     Iop_CmpGT32Sx4 = 82589,   785     Iop_CmpGT32Sx4 = 82589,
786     Iop_CmpGT64Sx2 = 82590,   786     Iop_CmpGT64Sx2 = 82590,
787     Iop_CmpGT8Ux16 = 82591,   787     Iop_CmpGT8Ux16 = 82591,
788     Iop_CmpGT16Ux8 = 82592,   788     Iop_CmpGT16Ux8 = 82592,
789     Iop_CmpGT32Ux4 = 82593,   789     Iop_CmpGT32Ux4 = 82593,
790     Iop_Cnt8x16 = 82594,   790     Iop_Cnt8x16 = 82594,
791     Iop_Clz8Sx16 = 82595,   791     Iop_Clz8Sx16 = 82595,
792     Iop_Clz16Sx8 = 82596,   792     Iop_Clz16Sx8 = 82596,
793     Iop_Clz32Sx4 = 82597,   793     Iop_Clz32Sx4 = 82597,
794     Iop_Cls8Sx16 = 82598,   794     Iop_Cls8Sx16 = 82598,
795     Iop_Cls16Sx8 = 82599,   795     Iop_Cls16Sx8 = 82599,
796     Iop_Cls32Sx4 = 82600,   796     Iop_Cls32Sx4 = 82600,
797     Iop_ShlN8x16 = 82601,   797     Iop_ShlN8x16 = 82601,
798     Iop_ShlN16x8 = 82602,   798     Iop_ShlN16x8 = 82602,
799     Iop_ShlN32x4 = 82603,   799     Iop_ShlN32x4 = 82603,
800     Iop_ShlN64x2 = 82604,   800     Iop_ShlN64x2 = 82604,
801     Iop_ShrN8x16 = 82605,   801     Iop_ShrN8x16 = 82605,
802     Iop_ShrN16x8 = 82606,   802     Iop_ShrN16x8 = 82606,
803     Iop_ShrN32x4 = 82607,   803     Iop_ShrN32x4 = 82607,
804     Iop_ShrN64x2 = 82608,   804     Iop_ShrN64x2 = 82608,
805     Iop_SarN8x16 = 82609,   805     Iop_SarN8x16 = 82609,
806     Iop_SarN16x8 = 82610,   806     Iop_SarN16x8 = 82610,
807     Iop_SarN32x4 = 82611,   807     Iop_SarN32x4 = 82611,
808     Iop_SarN64x2 = 82612,   808     Iop_SarN64x2 = 82612,
809     Iop_Shl8x16 = 82613,   809     Iop_Shl8x16 = 82613,
810     Iop_Shl16x8 = 82614,   810     Iop_Shl16x8 = 82614,
811     Iop_Shl32x4 = 82615,   811     Iop_Shl32x4 = 82615,
812     Iop_Shl64x2 = 82616,   812     Iop_Shl64x2 = 82616,
813     Iop_Shr8x16 = 82617,   813     Iop_Shr8x16 = 82617,
814     Iop_Shr16x8 = 82618,   814     Iop_Shr16x8 = 82618,
815     Iop_Shr32x4 = 82619,   815     Iop_Shr32x4 = 82619,
816     Iop_Shr64x2 = 82620,   816     Iop_Shr64x2 = 82620,
817     Iop_Sar8x16 = 82621,   817     Iop_Sar8x16 = 82621,
818     Iop_Sar16x8 = 82622,   818     Iop_Sar16x8 = 82622,
819     Iop_Sar32x4 = 82623,   819     Iop_Sar32x4 = 82623,
820     Iop_Sar64x2 = 82624,   820     Iop_Sar64x2 = 82624,
821     Iop_Sal8x16 = 82625,   821     Iop_Sal8x16 = 82625,
822     Iop_Sal16x8 = 82626,   822     Iop_Sal16x8 = 82626,
823     Iop_Sal32x4 = 82627,   823     Iop_Sal32x4 = 82627,
824     Iop_Sal64x2 = 82628,   824     Iop_Sal64x2 = 82628,
825     Iop_Rol8x16 = 82629,   825     Iop_Rol8x16 = 82629,
826     Iop_Rol16x8 = 82630,   826     Iop_Rol16x8 = 82630,
827     Iop_Rol32x4 = 82631,   827     Iop_Rol32x4 = 82631,
828     Iop_QShl8x16 = 82632,   828     Iop_QShl8x16 = 82632,
829     Iop_QShl16x8 = 82633,   829     Iop_QShl16x8 = 82633,
830     Iop_QShl32x4 = 82634,   830     Iop_QShl32x4 = 82634,
831     Iop_QShl64x2 = 82635,   831     Iop_QShl64x2 = 82635,
832     Iop_QSal8x16 = 82636,   832     Iop_QSal8x16 = 82636,
833     Iop_QSal16x8 = 82637,   833     Iop_QSal16x8 = 82637,
834     Iop_QSal32x4 = 82638,   834     Iop_QSal32x4 = 82638,
835     Iop_QSal64x2 = 82639,   835     Iop_QSal64x2 = 82639,
836     Iop_QShlN8Sx16 = 82640,   836     Iop_QShlN8Sx16 = 82640,
837     Iop_QShlN16Sx8 = 82641,   837     Iop_QShlN16Sx8 = 82641,
838     Iop_QShlN32Sx4 = 82642,   838     Iop_QShlN32Sx4 = 82642,
839     Iop_QShlN64Sx2 = 82643,   839     Iop_QShlN64Sx2 = 82643,
840     Iop_QShlN8x16 = 82644,   840     Iop_QShlN8x16 = 82644,
841     Iop_QShlN16x8 = 82645,   841     Iop_QShlN16x8 = 82645,
842     Iop_QShlN32x4 = 82646,   842     Iop_QShlN32x4 = 82646,
843     Iop_QShlN64x2 = 82647,   843     Iop_QShlN64x2 = 82647,
844     Iop_QSalN8x16 = 82648,   844     Iop_QSalN8x16 = 82648,
845     Iop_QSalN16x8 = 82649,   845     Iop_QSalN16x8 = 82649,
846     Iop_QSalN32x4 = 82650,   846     Iop_QSalN32x4 = 82650,
847     Iop_QSalN64x2 = 82651,   847     Iop_QSalN64x2 = 82651,
848     Iop_QNarrowBin16Sto8Ux16 = 82652,   848     Iop_QNarrowBin16Sto8Ux16 = 82652,
849     Iop_QNarrowBin32Sto16Ux8 = 82653,   849     Iop_QNarrowBin32Sto16Ux8 = 82653,
850     Iop_QNarrowBin16Sto8Sx16 = 82654,   850     Iop_QNarrowBin16Sto8Sx16 = 82654,
851     Iop_QNarrowBin32Sto16Sx8 = 82655,   851     Iop_QNarrowBin32Sto16Sx8 = 82655,
852     Iop_QNarrowBin16Uto8Ux16 = 82656,   852     Iop_QNarrowBin16Uto8Ux16 = 82656,
853     Iop_QNarrowBin32Uto16Ux8 = 82657,   853     Iop_QNarrowBin32Uto16Ux8 = 82657,
854     Iop_NarrowBin16to8x16 = 82658,   854     Iop_NarrowBin16to8x16 = 82658,
855     Iop_NarrowBin32to16x8 = 82659,   855     Iop_NarrowBin32to16x8 = 82659,
856     Iop_NarrowUn16to8x8 = 82660,   856     Iop_NarrowUn16to8x8 = 82660,
857     Iop_NarrowUn32to16x4 = 82661,   857     Iop_NarrowUn32to16x4 = 82661,
858     Iop_NarrowUn64to32x2 = 82662,   858     Iop_NarrowUn64to32x2 = 82662,
859     Iop_QNarrowUn16Sto8Sx8 = 82663,   859     Iop_QNarrowUn16Sto8Sx8 = 82663,
860     Iop_QNarrowUn32Sto16Sx4 = 82664,   860     Iop_QNarrowUn32Sto16Sx4 = 82664,
861     Iop_QNarrowUn64Sto32Sx2 = 82665,   861     Iop_QNarrowUn64Sto32Sx2 = 82665,
862     Iop_QNarrowUn16Sto8Ux8 = 82666,   862     Iop_QNarrowUn16Sto8Ux8 = 82666,
863     Iop_QNarrowUn32Sto16Ux4 = 82667,   863     Iop_QNarrowUn32Sto16Ux4 = 82667,
864     Iop_QNarrowUn64Sto32Ux2 = 82668,   864     Iop_QNarrowUn64Sto32Ux2 = 82668,
865     Iop_QNarrowUn16Uto8Ux8 = 82669,   865     Iop_QNarrowUn16Uto8Ux8 = 82669,
866     Iop_QNarrowUn32Uto16Ux4 = 82670,   866     Iop_QNarrowUn32Uto16Ux4 = 82670,
867     Iop_QNarrowUn64Uto32Ux2 = 82671,   867     Iop_QNarrowUn64Uto32Ux2 = 82671,
868     Iop_Widen8Uto16x8 = 82672,   868     Iop_Widen8Uto16x8 = 82672,
869     Iop_Widen16Uto32x4 = 82673,   869     Iop_Widen16Uto32x4 = 82673,
870     Iop_Widen32Uto64x2 = 82674,   870     Iop_Widen32Uto64x2 = 82674,
871     Iop_Widen8Sto16x8 = 82675,   871     Iop_Widen8Sto16x8 = 82675,
872     Iop_Widen16Sto32x4 = 82676,   872     Iop_Widen16Sto32x4 = 82676,
873     Iop_Widen32Sto64x2 = 82677,   873     Iop_Widen32Sto64x2 = 82677,
874     Iop_InterleaveHI8x16 = 82678,   874     Iop_InterleaveHI8x16 = 82678,
875     Iop_InterleaveHI16x8 = 82679,   875     Iop_InterleaveHI16x8 = 82679,
876     Iop_InterleaveHI32x4 = 82680,   876     Iop_InterleaveHI32x4 = 82680,
877     Iop_InterleaveHI64x2 = 82681,   877     Iop_InterleaveHI64x2 = 82681,
878     Iop_InterleaveLO8x16 = 82682,   878     Iop_InterleaveLO8x16 = 82682,
879     Iop_InterleaveLO16x8 = 82683,   879     Iop_InterleaveLO16x8 = 82683,
880     Iop_InterleaveLO32x4 = 82684,   880     Iop_InterleaveLO32x4 = 82684,
881     Iop_InterleaveLO64x2 = 82685,   881     Iop_InterleaveLO64x2 = 82685,
882     Iop_InterleaveOddLanes8x16 = 82686,   882     Iop_InterleaveOddLanes8x16 = 82686,
883     Iop_InterleaveEvenLanes8x16 = 82687,   883     Iop_InterleaveEvenLanes8x16 = 82687,
884     Iop_InterleaveOddLanes16x8 = 82688,   884     Iop_InterleaveOddLanes16x8 = 82688,
885     Iop_InterleaveEvenLanes16x8 = 82689,   885     Iop_InterleaveEvenLanes16x8 = 82689,
886     Iop_InterleaveOddLanes32x4 = 82690,   886     Iop_InterleaveOddLanes32x4 = 82690,
887     Iop_InterleaveEvenLanes32x4 = 82691,   887     Iop_InterleaveEvenLanes32x4 = 82691,
888     Iop_CatOddLanes8x16 = 82692,   888     Iop_CatOddLanes8x16 = 82692,
889     Iop_CatOddLanes16x8 = 82693,   889     Iop_CatOddLanes16x8 = 82693,
890     Iop_CatOddLanes32x4 = 82694,   890     Iop_CatOddLanes32x4 = 82694,
891     Iop_CatEvenLanes8x16 = 82695,   891     Iop_CatEvenLanes8x16 = 82695,
892     Iop_CatEvenLanes16x8 = 82696,   892     Iop_CatEvenLanes16x8 = 82696,
893     Iop_CatEvenLanes32x4 = 82697,   893     Iop_CatEvenLanes32x4 = 82697,
894     Iop_GetElem8x16 = 82698,   894     Iop_GetElem8x16 = 82698,
895     Iop_GetElem16x8 = 82699,   895     Iop_GetElem16x8 = 82699,
896     Iop_GetElem32x4 = 82700,   896     Iop_GetElem32x4 = 82700,
897     Iop_GetElem64x2 = 82701,   897     Iop_GetElem64x2 = 82701,
898     Iop_Dup8x16 = 82702,   898     Iop_Dup8x16 = 82702,
899     Iop_Dup16x8 = 82703,   899     Iop_Dup16x8 = 82703,
900     Iop_Dup32x4 = 82704,   900     Iop_Dup32x4 = 82704,
901     Iop_ExtractV128 = 82705,   901     Iop_ExtractV128 = 82705,
902     Iop_Reverse16_8x16 = 82706,   902     Iop_Reverse16_8x16 = 82706,
903     Iop_Reverse32_8x16 = 82707,   903     Iop_Reverse32_8x16 = 82707,
904     Iop_Reverse32_16x8 = 82708,   904     Iop_Reverse32_16x8 = 82708,
905     Iop_Reverse64_8x16 = 82709,   905     Iop_Reverse64_8x16 = 82709,
906     Iop_Reverse64_16x8 = 82710,   906     Iop_Reverse64_16x8 = 82710,
907     Iop_Reverse64_32x4 = 82711,   907     Iop_Reverse64_32x4 = 82711,
908     Iop_Perm8x16 = 82712,   908     Iop_Perm8x16 = 82712,
909     Iop_Recip32x4 = 82713,   909     Iop_Recip32x4 = 82713,
910     Iop_Rsqrte32x4 = 82714,   910     Iop_Rsqrte32x4 = 82714,
911     Iop_V256to64_0 = 82715,   911     Iop_V256to64_0 = 82715,
912     Iop_V256to64_1 = 82716,   912     Iop_V256to64_1 = 82716,
913     Iop_V256to64_2 = 82717,   913     Iop_V256to64_2 = 82717,
914     Iop_V256to64_3 = 82718,   914     Iop_V256to64_3 = 82718,
915     Iop_64x4toV256 = 82719,   915     Iop_64x4toV256 = 82719,
916     Iop_V256toV128_0 = 82720,   916     Iop_V256toV128_0 = 82720,
917     Iop_V256toV128_1 = 82721,   917     Iop_V256toV128_1 = 82721,
918     Iop_V128HLtoV256 = 82722,   918     Iop_V128HLtoV256 = 82722,
919     Iop_AndV256 = 82723,   919     Iop_AndV256 = 82723,
920     Iop_OrV256 = 82724,   920     Iop_OrV256 = 82724,
921     Iop_XorV256 = 82725,   921     Iop_XorV256 = 82725,
922     Iop_NotV256 = 82726,   922     Iop_NotV256 = 82726,
923     Iop_Add64Fx4 = 82727,   923     Iop_Add64Fx4 = 82727,
924     Iop_Sub64Fx4 = 82728,   924     Iop_Sub64Fx4 = 82728,
925     Iop_Mul64Fx4 = 82729,   925     Iop_Mul64Fx4 = 82729,
926     Iop_Div64Fx4 = 82730,   926     Iop_Div64Fx4 = 82730,
927     Iop_Add32Fx8 = 82731,   927     Iop_Add32Fx8 = 82731,
928     Iop_Sub32Fx8 = 82732,   928     Iop_Sub32Fx8 = 82732,
929     Iop_Mul32Fx8 = 82733,   929     Iop_Mul32Fx8 = 82733,
930     Iop_Div32Fx8 = 82734   930     Iop_Div32Fx8 = 82734
931 } ;   931 } ;
932 typedef enum __anonenum_IROp_10 IROp;   932 typedef enum __anonenum_IROp_10 IROp;
933 enum __anonenum_IRRoundingMode_11 {   933 enum __anonenum_IRRoundingMode_11 {
934     Irrm_NEAREST = 0,   934     Irrm_NEAREST = 0,
935     Irrm_NegINF = 1,   935     Irrm_NegINF = 1,
936     Irrm_PosINF = 2,   936     Irrm_PosINF = 2,
937     Irrm_ZERO = 3   937     Irrm_ZERO = 3
938 } ;   938 } ;
939 typedef enum __anonenum_IRRoundingMode_11 IRRoundingMode;   939 typedef enum __anonenum_IRRoundingMode_11 IRRoundingMode;
940 enum __anonenum_IRRoundingModeDFP_12 {   940 enum __anonenum_IRRoundingModeDFP_12 {
941     Irrm_DFP_NEAREST = 0,   941     Irrm_DFP_NEAREST = 0,
942     Irrm_DFP_NegINF = 1,   942     Irrm_DFP_NegINF = 1,
943     Irrm_DFP_PosINF = 2,   943     Irrm_DFP_PosINF = 2,
944     Irrm_DFP_ZERO = 3,   944     Irrm_DFP_ZERO = 3,
945     Irrm_DFP_NEAREST_TIE_AWAY_0 = 4,   945     Irrm_DFP_NEAREST_TIE_AWAY_0 = 4,
946     Irrm_DFP_PREPARE_SHORTER = 5,   946     Irrm_DFP_PREPARE_SHORTER = 5,
947     Irrm_DFP_AWAY_FROM_ZERO = 6,   947     Irrm_DFP_AWAY_FROM_ZERO = 6,
948     Irrm_DFP_NEAREST_TIE_TOWARD_0 = 7   948     Irrm_DFP_NEAREST_TIE_TOWARD_0 = 7
949 } ;   949 } ;
950 typedef enum __anonenum_IRRoundingModeDFP_12 IRRoundingModeDFP;   950 typedef enum __anonenum_IRRoundingModeDFP_12 IRRoundingModeDFP;
951 enum __anonenum_IRCmpF64Result_13 {   951 enum __anonenum_IRCmpF64Result_13 {
952     Ircr_UN = 69,   952     Ircr_UN = 69,
953     Ircr_LT = 1,   953     Ircr_LT = 1,
954     Ircr_GT = 0,   954     Ircr_GT = 0,
955     Ircr_EQ = 64   955     Ircr_EQ = 64
956 } ;   956 } ;
957 typedef enum __anonenum_IRCmpF64Result_13 IRCmpF64Result;   957 typedef enum __anonenum_IRCmpF64Result_13 IRCmpF64Result;
958 typedef IRCmpF64Result IRCmpF32Result;   958 typedef IRCmpF64Result IRCmpF32Result;
959 typedef IRCmpF64Result IRCmpF128Result;   959 typedef IRCmpF64Result IRCmpF128Result;
960 struct _IRQop;   960 struct _IRQop;
961 typedef struct _IRQop IRQop;   961 typedef struct _IRQop IRQop;
962 struct _IRTriop;   962 struct _IRTriop;
963 typedef struct _IRTriop IRTriop;   963 typedef struct _IRTriop IRTriop;
964 enum __anonenum_IRExprTag_14 {   964 enum __anonenum_IRExprTag_14 {
965     Iex_Binder = 86016,   965     Iex_Binder = 86016,
966     Iex_Get = 86017,   966     Iex_Get = 86017,
967     Iex_GetI = 86018,   967     Iex_GetI = 86018,
968     Iex_RdTmp = 86019,   968     Iex_RdTmp = 86019,
969     Iex_Qop = 86020,   969     Iex_Qop = 86020,
970     Iex_Triop = 86021,   970     Iex_Triop = 86021,
971     Iex_Binop = 86022,   971     Iex_Binop = 86022,
972     Iex_Unop = 86023,   972     Iex_Unop = 86023,
973     Iex_Load = 86024,   973     Iex_Load = 86024,
974     Iex_Const = 86025,   974     Iex_Const = 86025,
975     Iex_Mux0X = 86026,   975     Iex_Mux0X = 86026,
976     Iex_CCall = 86027   976     Iex_CCall = 86027
977 } ;   977 } ;
978 typedef enum __anonenum_IRExprTag_14 IRExprTag;   978 typedef enum __anonenum_IRExprTag_14 IRExprTag;
979 struct _IRExpr;   979 struct _IRExpr;
980 typedef struct _IRExpr IRExpr;   980 typedef struct _IRExpr IRExpr;
981 struct __anonstruct_Binder_16 {   981 struct __anonstruct_Binder_16 {
982    Int binder ;   982    Int binder ;
983 };   983 };
984 struct __anonstruct_Get_17 {   984 struct __anonstruct_Get_17 {
985    Int offset ;   985    Int offset ;
986    IRType ty ;   986    IRType ty ;
987 };   987 };
988 struct __anonstruct_GetI_18 {   988 struct __anonstruct_GetI_18 {
989    IRRegArray *descr ;   989    IRRegArray *descr ;
990    IRExpr *ix ;   990    IRExpr *ix ;
991    Int bias ;   991    Int bias ;
992 };   992 };
993 struct __anonstruct_RdTmp_19 {   993 struct __anonstruct_RdTmp_19 {
994    IRTemp tmp ;   994    IRTemp tmp ;
995 };   995 };
996 struct __anonstruct_Qop_20 {   996 struct __anonstruct_Qop_20 {
997    IRQop *details ;   997    IRQop *details ;
998 };   998 };
999 struct __anonstruct_Triop_21 {   999 struct __anonstruct_Triop_21 {
1000    IRTriop *details ;   1000    IRTriop *details ;
1001 };   1001 };
1002 struct __anonstruct_Binop_22 {   1002 struct __anonstruct_Binop_22 {
1003    IROp op ;   1003    IROp op ;
1004    IRExpr *arg1 ;   1004    IRExpr *arg1 ;
1005    IRExpr *arg2 ;   1005    IRExpr *arg2 ;
1006 };   1006 };
1007 struct __anonstruct_Unop_23 {   1007 struct __anonstruct_Unop_23 {
1008    IROp op ;   1008    IROp op ;
1009    IRExpr *arg ;   1009    IRExpr *arg ;
1010 };   1010 };
1011 struct __anonstruct_Load_24 {   1011 struct __anonstruct_Load_24 {
1012    IREndness end ;   1012    IREndness end ;
1013    IRType ty ;   1013    IRType ty ;
1014    IRExpr *addr ;   1014    IRExpr *addr ;
1015 };   1015 };
1016 struct __anonstruct_Const_25 {   1016 struct __anonstruct_Const_25 {
1017    IRConst *con ;   1017    IRConst *con ;
1018 };   1018 };
1019 struct __anonstruct_CCall_26 {   1019 struct __anonstruct_CCall_26 {
1020    IRCallee *cee ;   1020    IRCallee *cee ;
1021    IRType retty ;   1021    IRType retty ;
1022    IRExpr **args ;   1022    IRExpr **args ;
1023 };   1023 };
1024 struct __anonstruct_Mux0X_27 {   1024 struct __anonstruct_Mux0X_27 {
1025    IRExpr *cond ;   1025    IRExpr *cond ;
1026    IRExpr *expr0 ;   1026    IRExpr *expr0 ;
1027    IRExpr *exprX ;   1027    IRExpr *exprX ;
1028 };   1028 };
1029 union __anonunion_Iex_15 {   1029 union __anonunion_Iex_15 {
1030    struct __anonstruct_Binder_16 Binder ;   1030    struct __anonstruct_Binder_16 Binder ;
1031    struct __anonstruct_Get_17 Get ;   1031    struct __anonstruct_Get_17 Get ;
1032    struct __anonstruct_GetI_18 GetI ;   1032    struct __anonstruct_GetI_18 GetI ;
1033    struct __anonstruct_RdTmp_19 RdTmp ;   1033    struct __anonstruct_RdTmp_19 RdTmp ;
1034    struct __anonstruct_Qop_20 Qop ;   1034    struct __anonstruct_Qop_20 Qop ;
1035    struct __anonstruct_Triop_21 Triop ;   1035    struct __anonstruct_Triop_21 Triop ;
1036    struct __anonstruct_Binop_22 Binop ;   1036    struct __anonstruct_Binop_22 Binop ;
1037    struct __anonstruct_Unop_23 Unop ;   1037    struct __anonstruct_Unop_23 Unop ;
1038    struct __anonstruct_Load_24 Load ;   1038    struct __anonstruct_Load_24 Load ;
1039    struct __anonstruct_Const_25 Const ;   1039    struct __anonstruct_Const_25 Const ;
1040    struct __anonstruct_CCall_26 CCall ;   1040    struct __anonstruct_CCall_26 CCall ;
1041    struct __anonstruct_Mux0X_27 Mux0X ;   1041    struct __anonstruct_Mux0X_27 Mux0X ;
1042 };   1042 };
1043 struct _IRExpr {   1043 struct _IRExpr {
1044    IRExprTag tag ;   1044    IRExprTag tag ;
1045    union __anonunion_Iex_15 Iex ;   1045    union __anonunion_Iex_15 Iex ;
1046 };   1046 };
1047 struct _IRTriop {   1047 struct _IRTriop {
1048    IROp op ;   1048    IROp op ;
1049    IRExpr *arg1 ;   1049    IRExpr *arg1 ;
1050    IRExpr *arg2 ;   1050    IRExpr *arg2 ;
1051    IRExpr *arg3 ;   1051    IRExpr *arg3 ;
1052 };   1052 };
1053 struct _IRQop {   1053 struct _IRQop {
1054    IROp op ;   1054    IROp op ;
1055    IRExpr *arg1 ;   1055    IRExpr *arg1 ;
1056    IRExpr *arg2 ;   1056    IRExpr *arg2 ;
1057    IRExpr *arg3 ;   1057    IRExpr *arg3 ;
1058    IRExpr *arg4 ;   1058    IRExpr *arg4 ;
1059 };   1059 };
1060 enum __anonenum_IRJumpKind_28 {   1060 enum __anonenum_IRJumpKind_28 {
1061     Ijk_INVALID = 90112,   1061     Ijk_INVALID = 90112,
1062     Ijk_Boring = 90113,   1062     Ijk_Boring = 90113,
1063     Ijk_Call = 90114,   1063     Ijk_Call = 90114,
1064     Ijk_Ret = 90115,   1064     Ijk_Ret = 90115,
1065     Ijk_ClientReq = 90116,   1065     Ijk_ClientReq = 90116,
1066     Ijk_Yield = 90117,   1066     Ijk_Yield = 90117,
1067     Ijk_EmWarn = 90118,   1067     Ijk_EmWarn = 90118,
1068     Ijk_EmFail = 90119,   1068     Ijk_EmFail = 90119,
1069     Ijk_NoDecode = 90120,   1069     Ijk_NoDecode = 90120,
1070     Ijk_MapFail = 90121,   1070     Ijk_MapFail = 90121,
1071     Ijk_TInval = 90122,   1071     Ijk_TInval = 90122,
1072     Ijk_NoRedir = 90123,   1072     Ijk_NoRedir = 90123,
1073     Ijk_SigTRAP = 90124,   1073     Ijk_SigTRAP = 90124,
1074     Ijk_SigSEGV = 90125,   1074     Ijk_SigSEGV = 90125,
1075     Ijk_SigBUS = 90126,   1075     Ijk_SigBUS = 90126,
1076     Ijk_Sys_syscall = 90127,   1076     Ijk_Sys_syscall = 90127,
1077     Ijk_Sys_int32 = 90128,   1077     Ijk_Sys_int32 = 90128,
1078     Ijk_Sys_int128 = 90129,   1078     Ijk_Sys_int128 = 90129,
1079     Ijk_Sys_int129 = 90130,   1079     Ijk_Sys_int129 = 90130,
1080     Ijk_Sys_int130 = 90131,   1080     Ijk_Sys_int130 = 90131,
1081     Ijk_Sys_sysenter = 90132   1081     Ijk_Sys_sysenter = 90132
1082 } ;   1082 } ;
1083 typedef enum __anonenum_IRJumpKind_28 IRJumpKind;   1083 typedef enum __anonenum_IRJumpKind_28 IRJumpKind;
1084 enum __anonenum_IREffect_29 {   1084 enum __anonenum_IREffect_29 {
1085     Ifx_None = 5888,   1085     Ifx_None = 5888,
1086     Ifx_Read = 5889,   1086     Ifx_Read = 5889,
1087     Ifx_Write = 5890,   1087     Ifx_Write = 5890,
1088     Ifx_Modify = 5891   1088     Ifx_Modify = 5891
1089 } ;   1089 } ;
1090 typedef enum __anonenum_IREffect_29 IREffect;   1090 typedef enum __anonenum_IREffect_29 IREffect;
1091 struct __anonstruct_fxState_30 {   1091 struct __anonstruct_fxState_30 {
1092    IREffect fx : 16 ;   1092    IREffect fx : 16 ;
1093    UShort offset ;   1093    UShort offset ;
1094    UShort size ;   1094    UShort size ;
1095    UChar nRepeats ;   1095    UChar nRepeats ;
1096    UChar repeatLen ;   1096    UChar repeatLen ;
1097 };   1097 };
1098 struct _IRDirty {   1098 struct _IRDirty {
1099    IRCallee *cee ;   1099    IRCallee *cee ;
1100    IRExpr *guard ;   1100    IRExpr *guard ;
1101    IRExpr **args ;   1101    IRExpr **args ;
1102    IRTemp tmp ;   1102    IRTemp tmp ;
1103    IREffect mFx ;   1103    IREffect mFx ;
1104    IRExpr *mAddr ;   1104    IRExpr *mAddr ;
1105    Int mSize ;   1105    Int mSize ;
1106    Bool needsBBP ;   1106    Bool needsBBP ;
1107    Int nFxState ;   1107    Int nFxState ;
1108    struct __anonstruct_fxState_30 fxState[7] ;   1108    struct __anonstruct_fxState_30 fxState[7] ;
1109 };   1109 };
1110 typedef struct _IRDirty IRDirty;   1110 typedef struct _IRDirty IRDirty;
1111 enum __anonenum_IRMBusEvent_31 {   1111 enum __anonenum_IRMBusEvent_31 {
1112     Imbe_Fence = 98304,   1112     Imbe_Fence = 98304,
1113     Imbe_CancelReservation = 98305   1113     Imbe_CancelReservation = 98305
1114 } ;   1114 } ;
1115 typedef enum __anonenum_IRMBusEvent_31 IRMBusEvent;   1115 typedef enum __anonenum_IRMBusEvent_31 IRMBusEvent;
1116 struct __anonstruct_IRCAS_32 {   1116 struct __anonstruct_IRCAS_32 {
1117    IRTemp oldHi ;   1117    IRTemp oldHi ;
1118    IRTemp oldLo ;   1118    IRTemp oldLo ;
1119    IREndness end ;   1119    IREndness end ;
1120    IRExpr *addr ;   1120    IRExpr *addr ;
1121    IRExpr *expdHi ;   1121    IRExpr *expdHi ;
1122    IRExpr *expdLo ;   1122    IRExpr *expdLo ;
1123    IRExpr *dataHi ;   1123    IRExpr *dataHi ;
1124    IRExpr *dataLo ;   1124    IRExpr *dataLo ;
1125 };   1125 };
1126 typedef struct __anonstruct_IRCAS_32 IRCAS;   1126 typedef struct __anonstruct_IRCAS_32 IRCAS;
1127 struct __anonstruct_IRPutI_33 {   1127 struct __anonstruct_IRPutI_33 {
1128    IRRegArray *descr ;   1128    IRRegArray *descr ;
1129    IRExpr *ix ;   1129    IRExpr *ix ;
1130    Int bias ;   1130    Int bias ;
1131    IRExpr *data ;   1131    IRExpr *data ;
1132 };   1132 };
1133 typedef struct __anonstruct_IRPutI_33 IRPutI;   1133 typedef struct __anonstruct_IRPutI_33 IRPutI;
1134 enum __anonenum_IRStmtTag_34 {   1134 enum __anonenum_IRStmtTag_34 {
1135     Ist_NoOp = 102400,   1135     Ist_NoOp = 102400,
1136     Ist_IMark = 102401,   1136     Ist_IMark = 102401,
1137     Ist_AbiHint = 102402,   1137     Ist_AbiHint = 102402,
1138     Ist_Put = 102403,   1138     Ist_Put = 102403,
1139     Ist_PutI = 102404,   1139     Ist_PutI = 102404,
1140     Ist_WrTmp = 102405,   1140     Ist_WrTmp = 102405,
1141     Ist_Store = 102406,   1141     Ist_Store = 102406,
1142     Ist_CAS = 102407,   1142     Ist_CAS = 102407,
1143     Ist_LLSC = 102408,   1143     Ist_LLSC = 102408,
1144     Ist_Dirty = 102409,   1144     Ist_Dirty = 102409,
1145     Ist_MBE = 102410,   1145     Ist_MBE = 102410,
1146     Ist_Exit = 102411   1146     Ist_Exit = 102411
1147 } ;   1147 } ;
1148 typedef enum __anonenum_IRStmtTag_34 IRStmtTag;   1148 typedef enum __anonenum_IRStmtTag_34 IRStmtTag;
1149 struct __anonstruct_NoOp_36 {   1149 struct __anonstruct_NoOp_36 {
1150     1150  
1151 };   1151 };
1152 struct __anonstruct_IMark_37 {   1152 struct __anonstruct_IMark_37 {
1153    Addr64 addr ;   1153    Addr64 addr ;
1154    Int len ;   1154    Int len ;
1155    UChar delta ;   1155    UChar delta ;
1156 };   1156 };
1157 struct __anonstruct_AbiHint_38 {   1157 struct __anonstruct_AbiHint_38 {
1158    IRExpr *base ;   1158    IRExpr *base ;
1159    Int len ;   1159    Int len ;
1160    IRExpr *nia ;   1160    IRExpr *nia ;
1161 };   1161 };
1162 struct __anonstruct_Put_39 {   1162 struct __anonstruct_Put_39 {
1163    Int offset ;   1163    Int offset ;
1164    IRExpr *data ;   1164    IRExpr *data ;
1165 };   1165 };
1166 struct __anonstruct_PutI_40 {   1166 struct __anonstruct_PutI_40 {
1167    IRPutI *details ;   1167    IRPutI *details ;
1168 };   1168 };
1169 struct __anonstruct_WrTmp_41 {   1169 struct __anonstruct_WrTmp_41 {
1170    IRTemp tmp ;   1170    IRTemp tmp ;
1171    IRExpr *data ;   1171    IRExpr *data ;
1172 };   1172 };
1173 struct __anonstruct_Store_42 {   1173 struct __anonstruct_Store_42 {
1174    IREndness end ;   1174    IREndness end ;
1175    IRExpr *addr ;   1175    IRExpr *addr ;
1176    IRExpr *data ;   1176    IRExpr *data ;
1177 };   1177 };
1178 struct __anonstruct_CAS_43 {   1178 struct __anonstruct_CAS_43 {
1179    IRCAS *details ;   1179    IRCAS *details ;
1180 };   1180 };
1181 struct __anonstruct_LLSC_44 {   1181 struct __anonstruct_LLSC_44 {
1182    IREndness end ;   1182    IREndness end ;
1183    IRTemp result ;   1183    IRTemp result ;
1184    IRExpr *addr ;   1184    IRExpr *addr ;
1185    IRExpr *storedata ;   1185    IRExpr *storedata ;
1186 };   1186 };
1187 struct __anonstruct_Dirty_45 {   1187 struct __anonstruct_Dirty_45 {
1188    IRDirty *details ;   1188    IRDirty *details ;
1189 };   1189 };
1190 struct __anonstruct_MBE_46 {   1190 struct __anonstruct_MBE_46 {
1191    IRMBusEvent event ;   1191    IRMBusEvent event ;
1192 };   1192 };
1193 struct __anonstruct_Exit_47 {   1193 struct __anonstruct_Exit_47 {
1194    IRExpr *guard ;   1194    IRExpr *guard ;
1195    IRConst *dst ;   1195    IRConst *dst ;
1196    IRJumpKind jk ;   1196    IRJumpKind jk ;
1197    Int offsIP ;   1197    Int offsIP ;
1198 };   1198 };
1199 union __anonunion_Ist_35 {   1199 union __anonunion_Ist_35 {
1200    struct __anonstruct_NoOp_36 NoOp ;   1200    struct __anonstruct_NoOp_36 NoOp ;
1201    struct __anonstruct_IMark_37 IMark ;   1201    struct __anonstruct_IMark_37 IMark ;
1202    struct __anonstruct_AbiHint_38 AbiHint ;   1202    struct __anonstruct_AbiHint_38 AbiHint ;
1203    struct __anonstruct_Put_39 Put ;   1203    struct __anonstruct_Put_39 Put ;
1204    struct __anonstruct_PutI_40 PutI ;   1204    struct __anonstruct_PutI_40 PutI ;
1205    struct __anonstruct_WrTmp_41 WrTmp ;   1205    struct __anonstruct_WrTmp_41 WrTmp ;
1206    struct __anonstruct_Store_42 Store ;   1206    struct __anonstruct_Store_42 Store ;
1207    struct __anonstruct_CAS_43 CAS ;   1207    struct __anonstruct_CAS_43 CAS ;
1208    struct __anonstruct_LLSC_44 LLSC ;   1208    struct __anonstruct_LLSC_44 LLSC ;
1209    struct __anonstruct_Dirty_45 Dirty ;   1209    struct __anonstruct_Dirty_45 Dirty ;
1210    struct __anonstruct_MBE_46 MBE ;   1210    struct __anonstruct_MBE_46 MBE ;
1211    struct __anonstruct_Exit_47 Exit ;   1211    struct __anonstruct_Exit_47 Exit ;
1212 };   1212 };
1213 struct _IRStmt {   1213 struct _IRStmt {
1214    IRStmtTag tag ;   1214    IRStmtTag tag ;
1215    union __anonunion_Ist_35 Ist ;   1215    union __anonunion_Ist_35 Ist ;
1216 };   1216 };
1217 typedef struct _IRStmt IRStmt;   1217 typedef struct _IRStmt IRStmt;
1218 struct __anonstruct_IRTypeEnv_48 {   1218 struct __anonstruct_IRTypeEnv_48 {
1219    IRType *types ;   1219    IRType *types ;
1220    Int types_size ;   1220    Int types_size ;
1221    Int types_used ;   1221    Int types_used ;
1222 };   1222 };
1223 typedef struct __anonstruct_IRTypeEnv_48 IRTypeEnv;   1223 typedef struct __anonstruct_IRTypeEnv_48 IRTypeEnv;
1224 struct __anonstruct_IRSB_49 {   1224 struct __anonstruct_IRSB_49 {
1225    IRTypeEnv *tyenv ;   1225    IRTypeEnv *tyenv ;
1226    IRStmt **stmts ;   1226    IRStmt **stmts ;
1227    Int stmts_size ;   1227    Int stmts_size ;
1228    Int stmts_used ;   1228    Int stmts_used ;
1229    IRExpr *next ;   1229    IRExpr *next ;
1230    IRJumpKind jumpkind ;   1230    IRJumpKind jumpkind ;
1231    Int offsIP ;   1231    Int offsIP ;
1232 };   1232 };
1233 typedef struct __anonstruct_IRSB_49 IRSB;   1233 typedef struct __anonstruct_IRSB_49 IRSB;
1234 enum __anonenum_VexArch_50 {   1234 enum __anonenum_VexArch_50 {
1235     VexArch_INVALID = 0,   1235     VexArch_INVALID = 0,
1236     VexArchX86 = 1,   1236     VexArchX86 = 1,
1237     VexArchAMD64 = 2,   1237     VexArchAMD64 = 2,
1238     VexArchARM = 3,   1238     VexArchARM = 3,
1239     VexArchPPC32 = 4,   1239     VexArchPPC32 = 4,
1240     VexArchPPC64 = 5,   1240     VexArchPPC64 = 5,
1241     VexArchS390X = 6,   1241     VexArchS390X = 6,
1242     VexArchMIPS32 = 7   1242     VexArchMIPS32 = 7
1243 } ;   1243 } ;
1244 typedef enum __anonenum_VexArch_50 VexArch;   1244 typedef enum __anonenum_VexArch_50 VexArch;
1245 struct __anonstruct_VexArchInfo_51 {   1245 struct __anonstruct_VexArchInfo_51 {
1246    UInt hwcaps ;   1246    UInt hwcaps ;
1247    Int ppc_cache_line_szB ;   1247    Int ppc_cache_line_szB ;
1248    UInt ppc_dcbz_szB ;   1248    UInt ppc_dcbz_szB ;
1249    UInt ppc_dcbzl_szB ;   1249    UInt ppc_dcbzl_szB ;
1250 };   1250 };
1251 typedef struct __anonstruct_VexArchInfo_51 VexArchInfo;   1251 typedef struct __anonstruct_VexArchInfo_51 VexArchInfo;
1252 struct __anonstruct_VexAbiInfo_52 {   1252 struct __anonstruct_VexAbiInfo_52 {
1253    Int guest_stack_redzone_size ;   1253    Int guest_stack_redzone_size ;
1254    Bool guest_amd64_assume_fs_is_zero ;   1254    Bool guest_amd64_assume_fs_is_zero ;
1255    Bool guest_amd64_assume_gs_is_0x60 ;   1255    Bool guest_amd64_assume_gs_is_0x60 ;
1256    Bool guest_ppc_zap_RZ_at_blr ;   1256    Bool guest_ppc_zap_RZ_at_blr ;
1257    Bool (*guest_ppc_zap_RZ_at_bl)(Addr64  ) ;   1257    Bool (*guest_ppc_zap_RZ_at_bl)(Addr64  ) ;
1258    Bool guest_ppc_sc_continues_at_LR ;   1258    Bool guest_ppc_sc_continues_at_LR ;
1259    Bool host_ppc_calls_use_fndescrs ;   1259    Bool host_ppc_calls_use_fndescrs ;
1260    Bool host_ppc32_regalign_int64_args ;   1260    Bool host_ppc32_regalign_int64_args ;
1261 };   1261 };
1262 typedef struct __anonstruct_VexAbiInfo_52 VexAbiInfo;   1262 typedef struct __anonstruct_VexAbiInfo_52 VexAbiInfo;
1263 struct __anonstruct_VexControl_53 {   1263 struct __anonstruct_VexControl_53 {
1264    Int iropt_verbosity ;   1264    Int iropt_verbosity ;
1265    Int iropt_level ;   1265    Int iropt_level ;
1266    Bool iropt_precise_memory_exns ;   1266    Bool iropt_precise_memory_exns ;
1267    Int iropt_unroll_thresh ;   1267    Int iropt_unroll_thresh ;
1268    Int guest_max_insns ;   1268    Int guest_max_insns ;
1269    Int guest_chase_thresh ;   1269    Int guest_chase_thresh ;
1270    Bool guest_chase_cond ;   1270    Bool guest_chase_cond ;
1271 };   1271 };
1272 typedef struct __anonstruct_VexControl_53 VexControl;   1272 typedef struct __anonstruct_VexControl_53 VexControl;
1273 union __anonunion_x_54 {   1273 union __anonunion_x_54 {
1274    char c ;   1274    char c ;
1275    short s ;   1275    short s ;
1276    int i ;   1276    int i ;
1277    long l ;   1277    long l ;
1278    long long ll ;   1278    long long ll ;
1279    float f ;   1279    float f ;
1280    double d ;   1280    double d ;
1281    void *pto ;   1281    void *pto ;
1282    void (*ptf)(void) ;   1282    void (*ptf)(void) ;
1283 };   1283 };
1284 struct align {   1284 struct align {
1285    char c ;   1285    char c ;
1286    union __anonunion_x_54 x ;   1286    union __anonunion_x_54 x ;
1287 };   1287 };
1288 struct __anonstruct_alwaysDefd_56 {   1288 struct __anonstruct_alwaysDefd_56 {
1289    Int offset ;   1289    Int offset ;
1290    Int size ;   1290    Int size ;
1291 };   1291 };
1292 struct __anonstruct_VexGuestLayout_55 {   1292 struct __anonstruct_VexGuestLayout_55 {
1293    Int total_sizeB ;   1293    Int total_sizeB ;
1294    Int offset_SP ;   1294    Int offset_SP ;
1295    Int sizeof_SP ;   1295    Int sizeof_SP ;
1296    Int offset_FP ;   1296    Int offset_FP ;
1297    Int sizeof_FP ;   1297    Int sizeof_FP ;
1298    Int offset_IP ;   1298    Int offset_IP ;
1299    Int sizeof_IP ;   1299    Int sizeof_IP ;
1300    Int n_alwaysDefd ;   1300    Int n_alwaysDefd ;
1301    struct __anonstruct_alwaysDefd_56 alwaysDefd[24] ;   1301    struct __anonstruct_alwaysDefd_56 alwaysDefd[24] ;
1302 };   1302 };
1303 typedef struct __anonstruct_VexGuestLayout_55 VexGuestLayout;   1303 typedef struct __anonstruct_VexGuestLayout_55 VexGuestLayout;
1304 enum __anonenum_status_58 {   1304 enum __anonenum_status_58 {
1305     VexTransOK = 0,   1305     VexTransOK = 0,
1306     VexTransAccessFail = 1,   1306     VexTransAccessFail = 1,
1307     VexTransOutputFull = 2   1307     VexTransOutputFull = 2
1308 } ;   1308 } ;
1309 struct __anonstruct_VexTranslateResult_57 {   1309 struct __anonstruct_VexTranslateResult_57 {
1310    enum __anonenum_status_58 status ;   1310    enum __anonenum_status_58 status ;
1311    UInt n_sc_extents ;   1311    UInt n_sc_extents ;
1312    Int offs_profInc ;   1312    Int offs_profInc ;
1313    UInt n_guest_instrs ;   1313    UInt n_guest_instrs ;
1314 };   1314 };
1315 typedef struct __anonstruct_VexTranslateResult_57 VexTranslateResult;   1315 typedef struct __anonstruct_VexTranslateResult_57 VexTranslateResult;
1316 struct __anonstruct_VexGuestExtents_59 {   1316 struct __anonstruct_VexGuestExtents_59 {
1317    Addr64 base[3] ;   1317    Addr64 base[3] ;
1318    UShort len[3] ;   1318    UShort len[3] ;
1319    UShort n_used ;   1319    UShort n_used ;
1320 };   1320 };
1321 typedef struct __anonstruct_VexGuestExtents_59 VexGuestExtents;   1321 typedef struct __anonstruct_VexGuestExtents_59 VexGuestExtents;
1322 struct __anonstruct_VexTranslateArgs_60 {   1322 struct __anonstruct_VexTranslateArgs_60 {
1323    VexArch arch_guest ;   1323    VexArch arch_guest ;
1324    VexArchInfo archinfo_guest ;   1324    VexArchInfo archinfo_guest ;
1325    VexArch arch_host ;   1325    VexArch arch_host ;
1326    VexArchInfo archinfo_host ;   1326    VexArchInfo archinfo_host ;
1327    VexAbiInfo abiinfo_both ;   1327    VexAbiInfo abiinfo_both ;
1328    void *callback_opaque ;   1328    void *callback_opaque ;
1329    UChar *guest_bytes ;   1329    UChar *guest_bytes ;
1330    Addr64 guest_bytes_addr ;   1330    Addr64 guest_bytes_addr ;
1331    Bool (*chase_into_ok)(void * , Addr64  ) ;   1331    Bool (*chase_into_ok)(void * , Addr64  ) ;
1332    VexGuestExtents *guest_extents ;   1332    VexGuestExtents *guest_extents ;
1333    UChar *host_bytes ;   1333    UChar *host_bytes ;
1334    Int host_bytes_size ;   1334    Int host_bytes_size ;
1335    Int *host_bytes_used ;   1335    Int *host_bytes_used ;
1336    IRSB *(*instrument1)(void * , IRSB * , VexGuestLayout * , VexGuestExtents * ,   1336    IRSB *(*instrument1)(void * , IRSB * , VexGuestLayout * , VexGuestExtents * ,
1337                         IRType gWordTy , IRType hWordTy ) ;   1337                         IRType gWordTy , IRType hWordTy ) ;
1338    IRSB *(*instrument2)(void * , IRSB * , VexGuestLayout * , VexGuestExtents * ,   1338    IRSB *(*instrument2)(void * , IRSB * , VexGuestLayout * , VexGuestExtents * ,
1339                         IRType gWordTy , IRType hWordTy ) ;   1339                         IRType gWordTy , IRType hWordTy ) ;
1340    IRSB *(*finaltidy)(IRSB * ) ;   1340    IRSB *(*finaltidy)(IRSB * ) ;
1341    UInt (*needs_self_check)(void * , VexGuestExtents * ) ;   1341    UInt (*needs_self_check)(void * , VexGuestExtents * ) ;
1342    Bool (*preamble_function)(void * , IRSB * ) ;   1342    Bool (*preamble_function)(void * , IRSB * ) ;
1343    Int traceflags ;   1343    Int traceflags ;
1344    Bool addProfInc ;   1344    Bool addProfInc ;
1345    void *disp_cp_chain_me_to_slowEP ;   1345    void *disp_cp_chain_me_to_slowEP ;
1346    void *disp_cp_chain_me_to_fastEP ;   1346    void *disp_cp_chain_me_to_fastEP ;
1347    void *disp_cp_xindir ;   1347    void *disp_cp_xindir ;
1348    void *disp_cp_xassisted ;   1348    void *disp_cp_xassisted ;
1349 };   1349 };
1350 typedef struct __anonstruct_VexTranslateArgs_60 VexTranslateArgs;   1350 typedef struct __anonstruct_VexTranslateArgs_60 VexTranslateArgs;
1351 struct __anonstruct_VexInvalRange_61 {   1351 struct __anonstruct_VexInvalRange_61 {
1352    HWord start ;   1352    HWord start ;
1353    HWord len ;   1353    HWord len ;
1354 };   1354 };
1355 typedef struct __anonstruct_VexInvalRange_61 VexInvalRange;   1355 typedef struct __anonstruct_VexInvalRange_61 VexInvalRange;
1356 enum __anonenum_VexEmWarn_62 {   1356 enum __anonenum_VexEmWarn_62 {
1357     EmWarn_NONE = 0,   1357     EmWarn_NONE = 0,
1358     EmWarn_X86_x87exns = 1,   1358     EmWarn_X86_x87exns = 1,
1359     EmWarn_X86_x87precision = 2,   1359     EmWarn_X86_x87precision = 2,
1360     EmWarn_X86_sseExns = 3,   1360     EmWarn_X86_sseExns = 3,
1361     EmWarn_X86_fz = 4,   1361     EmWarn_X86_fz = 4,
1362     EmWarn_X86_daz = 5,   1362     EmWarn_X86_daz = 5,
1363     EmWarn_X86_acFlag = 6,   1363     EmWarn_X86_acFlag = 6,
1364     EmWarn_PPCexns = 7,   1364     EmWarn_PPCexns = 7,
1365     EmWarn_PPC64_redir_overflow = 8,   1365     EmWarn_PPC64_redir_overflow = 8,
1366     EmWarn_PPC64_redir_underflow = 9,   1366     EmWarn_PPC64_redir_underflow = 9,
1367     EmWarn_NUMBER = 10   1367     EmWarn_NUMBER = 10
1368 } ;   1368 } ;
1369 typedef enum __anonenum_VexEmWarn_62 VexEmWarn;   1369 typedef enum __anonenum_VexEmWarn_62 VexEmWarn;
1370 struct __anonstruct_VexGuestX86State_63 {   1370 struct __anonstruct_VexGuestX86State_63 {
1371    UInt host_EvC_FAILADDR ;   1371    UInt host_EvC_FAILADDR ;
1372    UInt host_EvC_COUNTER ;   1372    UInt host_EvC_COUNTER ;
1373    UInt guest_EAX ;   1373    UInt guest_EAX ;
1374    UInt guest_ECX ;   1374    UInt guest_ECX ;
1375    UInt guest_EDX ;   1375    UInt guest_EDX ;
1376    UInt guest_EBX ;   1376    UInt guest_EBX ;
1377    UInt guest_ESP ;   1377    UInt guest_ESP ;
1378    UInt guest_EBP ;   1378    UInt guest_EBP ;
1379    UInt guest_ESI ;   1379    UInt guest_ESI ;
1380    UInt guest_EDI ;   1380    UInt guest_EDI ;
1381    UInt guest_CC_OP ;   1381    UInt guest_CC_OP ;
1382    UInt guest_CC_DEP1 ;   1382    UInt guest_CC_DEP1 ;
1383    UInt guest_CC_DEP2 ;   1383    UInt guest_CC_DEP2 ;
1384    UInt guest_CC_NDEP ;   1384    UInt guest_CC_NDEP ;
1385    UInt guest_DFLAG ;   1385    UInt guest_DFLAG ;
1386    UInt guest_IDFLAG ;   1386    UInt guest_IDFLAG ;
1387    UInt guest_ACFLAG ;   1387    UInt guest_ACFLAG ;
1388    UInt guest_EIP ;   1388    UInt guest_EIP ;
1389    ULong guest_FPREG[8] ;   1389    ULong guest_FPREG[8] ;
1390    UChar guest_FPTAG[8] ;   1390    UChar guest_FPTAG[8] ;
1391    UInt guest_FPROUND ;   1391    UInt guest_FPROUND ;
1392    UInt guest_FC3210 ;   1392    UInt guest_FC3210 ;
1393    UInt guest_FTOP ;   1393    UInt guest_FTOP ;
1394    UInt guest_SSEROUND ;   1394    UInt guest_SSEROUND ;
1395    U128 guest_XMM0 ;   1395    U128 guest_XMM0 ;
1396    U128 guest_XMM1 ;   1396    U128 guest_XMM1 ;
1397    U128 guest_XMM2 ;   1397    U128 guest_XMM2 ;
1398    U128 guest_XMM3 ;   1398    U128 guest_XMM3 ;
1399    U128 guest_XMM4 ;   1399    U128 guest_XMM4 ;
1400    U128 guest_XMM5 ;   1400    U128 guest_XMM5 ;
1401    U128 guest_XMM6 ;   1401    U128 guest_XMM6 ;
1402    U128 guest_XMM7 ;   1402    U128 guest_XMM7 ;
1403    UShort guest_CS ;   1403    UShort guest_CS ;
1404    UShort guest_DS ;   1404    UShort guest_DS ;
1405    UShort guest_ES ;   1405    UShort guest_ES ;
1406    UShort guest_FS ;   1406    UShort guest_FS ;
1407    UShort guest_GS ;   1407    UShort guest_GS ;
1408    UShort guest_SS ;   1408    UShort guest_SS ;
1409    HWord guest_LDT ;   1409    HWord guest_LDT ;
1410    HWord guest_GDT ;   1410    HWord guest_GDT ;
1411    UInt guest_EMWARN ;   1411    UInt guest_EMWARN ;
1412    UInt guest_TISTART ;   1412    UInt guest_TISTART ;
1413    UInt guest_TILEN ;   1413    UInt guest_TILEN ;
1414    UInt guest_NRADDR ;   1414    UInt guest_NRADDR ;
1415    UInt guest_SC_CLASS ;   1415    UInt guest_SC_CLASS ;
1416    UInt guest_IP_AT_SYSCALL ;   1416    UInt guest_IP_AT_SYSCALL ;
1417    UInt padding[5] ;   1417    UInt padding[5] ;
1418 };   1418 };
1419 typedef struct __anonstruct_VexGuestX86State_63 VexGuestX86State;   1419 typedef struct __anonstruct_VexGuestX86State_63 VexGuestX86State;
1420 struct __anonstruct_Bits_66 {   1420 struct __anonstruct_Bits_66 {
1421    UShort LimitLow ;   1421    UShort LimitLow ;
1422    UShort BaseLow ;   1422    UShort BaseLow ;
1423    UInt BaseMid : 8 ;   1423    UInt BaseMid : 8 ;
1424    UInt Type : 5 ;   1424    UInt Type : 5 ;
1425    UInt Dpl : 2 ;   1425    UInt Dpl : 2 ;
1426    UInt Pres : 1 ;   1426    UInt Pres : 1 ;
1427    UInt LimitHi : 4 ;   1427    UInt LimitHi : 4 ;
1428    UInt Sys : 1 ;   1428    UInt Sys : 1 ;
1429    UInt Reserved_0 : 1 ;   1429    UInt Reserved_0 : 1 ;
1430    UInt Default_Big : 1 ;   1430    UInt Default_Big : 1 ;
1431    UInt Granularity : 1 ;   1431    UInt Granularity : 1 ;
1432    UInt BaseHi : 8 ;   1432    UInt BaseHi : 8 ;
1433 };   1433 };
1434 struct __anonstruct_Words_67 {   1434 struct __anonstruct_Words_67 {
1435    UInt word1 ;   1435    UInt word1 ;
1436    UInt word2 ;   1436    UInt word2 ;
1437 };   1437 };
1438 union __anonunion_LdtEnt_65 {   1438 union __anonunion_LdtEnt_65 {
1439    struct __anonstruct_Bits_66 Bits ;   1439    struct __anonstruct_Bits_66 Bits ;
1440    struct __anonstruct_Words_67 Words ;   1440    struct __anonstruct_Words_67 Words ;
1441 };   1441 };
1442 struct __anonstruct_VexGuestX86SegDescr_64 {   1442 struct __anonstruct_VexGuestX86SegDescr_64 {
1443    union __anonunion_LdtEnt_65 LdtEnt ;   1443    union __anonunion_LdtEnt_65 LdtEnt ;
1444 };   1444 };
1445 typedef struct __anonstruct_VexGuestX86SegDescr_64 VexGuestX86SegDescr;   1445 typedef struct __anonstruct_VexGuestX86SegDescr_64 VexGuestX86SegDescr;
1446 struct __anonstruct_X86_70 {   1446 struct __anonstruct_X86_70 {
1447    UInt r_ebp ;   1447    UInt r_ebp ;
1448 };   1448 };
1449 struct __anonstruct_AMD64_71 {   1449 struct __anonstruct_AMD64_71 {
1450    ULong r_rbp ;   1450    ULong r_rbp ;
1451 };   1451 };
1452 struct __anonstruct_PPC32_72 {   1452 struct __anonstruct_PPC32_72 {
1453    UInt r_lr ;   1453    UInt r_lr ;
1454 };   1454 };
1455 struct __anonstruct_PPC64_73 {   1455 struct __anonstruct_PPC64_73 {
1456    ULong r_lr ;   1456    ULong r_lr ;
1457 };   1457 };
1458 struct __anonstruct_ARM_74 {   1458 struct __anonstruct_ARM_74 {
1459    UInt r14 ;   1459    UInt r14 ;
1460    UInt r12 ;   1460    UInt r12 ;
1461    UInt r11 ;   1461    UInt r11 ;
1462    UInt r7 ;   1462    UInt r7 ;
1463 };   1463 };
1464 struct __anonstruct_S390X_75 {   1464 struct __anonstruct_S390X_75 {
1465    ULong r_fp ;   1465    ULong r_fp ;
1466    ULong r_lr ;   1466    ULong r_lr ;
1467 };   1467 };
1468 struct __anonstruct_MIPS32_76 {   1468 struct __anonstruct_MIPS32_76 {
1469    UInt r30 ;   1469    UInt r30 ;
1470    UInt r31 ;   1470    UInt r31 ;
1471    UInt r28 ;   1471    UInt r28 ;
1472 };   1472 };
1473 union __anonunion_misc_69 {   1473 union __anonunion_misc_69 {
1474    struct __anonstruct_X86_70 X86 ;   1474    struct __anonstruct_X86_70 X86 ;
1475    struct __anonstruct_AMD64_71 AMD64 ;   1475    struct __anonstruct_AMD64_71 AMD64 ;
1476    struct __anonstruct_PPC32_72 PPC32 ;   1476    struct __anonstruct_PPC32_72 PPC32 ;
1477    struct __anonstruct_PPC64_73 PPC64 ;   1477    struct __anonstruct_PPC64_73 PPC64 ;
1478    struct __anonstruct_ARM_74 ARM ;   1478    struct __anonstruct_ARM_74 ARM ;
1479    struct __anonstruct_S390X_75 S390X ;   1479    struct __anonstruct_S390X_75 S390X ;
1480    struct __anonstruct_MIPS32_76 MIPS32 ;   1480    struct __anonstruct_MIPS32_76 MIPS32 ;
1481 };   1481 };
1482 struct __anonstruct_UnwindStartRegs_68 {   1482 struct __anonstruct_UnwindStartRegs_68 {
1483    ULong r_pc ;   1483    ULong r_pc ;
1484    ULong r_sp ;   1484    ULong r_sp ;
1485    union __anonunion_misc_69 misc ;   1485    union __anonunion_misc_69 misc ;
1486 };   1486 };
1487 typedef struct __anonstruct_UnwindStartRegs_68 UnwindStartRegs;   1487 typedef struct __anonstruct_UnwindStartRegs_68 UnwindStartRegs;
1488 typedef unsigned short __vki_kernel_mode_t;   1488 typedef unsigned short __vki_kernel_mode_t;
1489 typedef long __vki_kernel_off_t;   1489 typedef long __vki_kernel_off_t;
1490 typedef int __vki_kernel_pid_t;   1490 typedef int __vki_kernel_pid_t;
1491 typedef unsigned short __vki_kernel_ipc_pid_t;   1491 typedef unsigned short __vki_kernel_ipc_pid_t;
1492 typedef unsigned short __vki_kernel_uid_t;   1492 typedef unsigned short __vki_kernel_uid_t;
1493 typedef unsigned short __vki_kernel_gid_t;   1493 typedef unsigned short __vki_kernel_gid_t;
1494 typedef unsigned int __vki_kernel_size_t;   1494 typedef unsigned int __vki_kernel_size_t;
1495 typedef long __vki_kernel_time_t;   1495 typedef long __vki_kernel_time_t;
1496 typedef long __vki_kernel_suseconds_t;   1496 typedef long __vki_kernel_suseconds_t;
1497 typedef long __vki_kernel_clock_t;   1497 typedef long __vki_kernel_clock_t;
1498 typedef int __vki_kernel_timer_t;   1498 typedef int __vki_kernel_timer_t;
1499 typedef int __vki_kernel_clockid_t;   1499 typedef int __vki_kernel_clockid_t;
1500 typedef char *__vki_kernel_caddr_t;   1500 typedef char *__vki_kernel_caddr_t;
1501 typedef unsigned int __vki_kernel_uid32_t;   1501 typedef unsigned int __vki_kernel_uid32_t;
1502 typedef unsigned int __vki_kernel_gid32_t;   1502 typedef unsigned int __vki_kernel_gid32_t;
1503 typedef unsigned short __vki_kernel_old_uid_t;   1503 typedef unsigned short __vki_kernel_old_uid_t;
1504 typedef unsigned short __vki_kernel_old_gid_t;   1504 typedef unsigned short __vki_kernel_old_gid_t;
1505 typedef long long __vki_kernel_loff_t;   1505 typedef long long __vki_kernel_loff_t;
1506 struct __anonstruct___vki_kernel_fsid_t_77 {   1506 struct __anonstruct___vki_kernel_fsid_t_77 {
1507    int val[2] ;   1507    int val[2] ;
1508 };   1508 };
1509 typedef struct __anonstruct___vki_kernel_fsid_t_77 __vki_kernel_fsid_t;   1509 typedef struct __anonstruct___vki_kernel_fsid_t_77 __vki_kernel_fsid_t;
1510 struct __anonstruct___vki_kernel_fd_set_78 {   1510 struct __anonstruct___vki_kernel_fd_set_78 {
1511    unsigned long fds_bits[1024U / (8U * sizeof(unsigned long ))] ;   1511    unsigned long fds_bits[1024U / (8U * sizeof(unsigned long ))] ;
1512 };   1512 };
1513 typedef struct __anonstruct___vki_kernel_fd_set_78 __vki_kernel_fd_set;   1513 typedef struct __anonstruct___vki_kernel_fd_set_78 __vki_kernel_fd_set;
1514 typedef int __vki_kernel_key_t;   1514 typedef int __vki_kernel_key_t;
1515 typedef int __vki_kernel_mqd_t;   1515 typedef int __vki_kernel_mqd_t;
1516 typedef __vki_kernel_fd_set vki_fd_set;   1516 typedef __vki_kernel_fd_set vki_fd_set;
1517 typedef __vki_kernel_mode_t vki_mode_t;   1517 typedef __vki_kernel_mode_t vki_mode_t;
1518 typedef __vki_kernel_off_t vki_off_t;   1518 typedef __vki_kernel_off_t vki_off_t;
1519 typedef __vki_kernel_pid_t vki_pid_t;   1519 typedef __vki_kernel_pid_t vki_pid_t;
1520 typedef __vki_kernel_key_t vki_key_t;   1520 typedef __vki_kernel_key_t vki_key_t;
1521 typedef __vki_kernel_suseconds_t vki_suseconds_t;   1521 typedef __vki_kernel_suseconds_t vki_suseconds_t;
1522 typedef __vki_kernel_timer_t vki_timer_t;   1522 typedef __vki_kernel_timer_t vki_timer_t;
1523 typedef __vki_kernel_clockid_t vki_clockid_t;   1523 typedef __vki_kernel_clockid_t vki_clockid_t;
1524 typedef __vki_kernel_mqd_t vki_mqd_t;   1524 typedef __vki_kernel_mqd_t vki_mqd_t;
1525 typedef __vki_kernel_uid32_t vki_uid_t;   1525 typedef __vki_kernel_uid32_t vki_uid_t;
1526 typedef __vki_kernel_gid32_t vki_gid_t;   1526 typedef __vki_kernel_gid32_t vki_gid_t;
1527 typedef __vki_kernel_old_uid_t vki_old_uid_t;   1527 typedef __vki_kernel_old_uid_t vki_old_uid_t;
1528 typedef __vki_kernel_old_gid_t vki_old_gid_t;   1528 typedef __vki_kernel_old_gid_t vki_old_gid_t;
1529 typedef __vki_kernel_loff_t vki_loff_t;   1529 typedef __vki_kernel_loff_t vki_loff_t;
1530 typedef __vki_kernel_size_t vki_size_t;   1530 typedef __vki_kernel_size_t vki_size_t;
1531 typedef __vki_kernel_time_t vki_time_t;   1531 typedef __vki_kernel_time_t vki_time_t;
1532 typedef __vki_kernel_clock_t vki_clock_t;   1532 typedef __vki_kernel_clock_t vki_clock_t;
1533 typedef __vki_kernel_caddr_t vki_caddr_t;   1533 typedef __vki_kernel_caddr_t vki_caddr_t;
1534 typedef unsigned long vki_u_long;   1534 typedef unsigned long vki_u_long;
1535 typedef unsigned int vki_uint;   1535 typedef unsigned int vki_uint;
1536 typedef unsigned char __vki_u8;   1536 typedef unsigned char __vki_u8;
1537 typedef short __vki_s16;   1537 typedef short __vki_s16;
1538 typedef unsigned short __vki_u16;   1538 typedef unsigned short __vki_u16;
1539 typedef int __vki_s32;   1539 typedef int __vki_s32;
1540 typedef unsigned int __vki_u32;   1540 typedef unsigned int __vki_u32;
1541 typedef long long __vki_s64;   1541 typedef long long __vki_s64;
1542 typedef unsigned long long __vki_u64;   1542 typedef unsigned long long __vki_u64;
1543 typedef unsigned short vki_u16;   1543 typedef unsigned short vki_u16;
1544 typedef unsigned int vki_u32;   1544 typedef unsigned int vki_u32;
1545 typedef void __vki_signalfn_t(int  );   1545 typedef void __vki_signalfn_t(int  );
1546 typedef __vki_signalfn_t *__vki_sighandler_t;   1546 typedef __vki_signalfn_t *__vki_sighandler_t;
1547 typedef void __vki_restorefn_t(void);   1547 typedef void __vki_restorefn_t(void);
1548 typedef __vki_restorefn_t *__vki_sigrestore_t;   1548 typedef __vki_restorefn_t *__vki_sigrestore_t;
1549 typedef unsigned long vki_old_sigset_t;   1549 typedef unsigned long vki_old_sigset_t;
1550 struct __anonstruct_vki_sigset_t_79 {   1550 struct __anonstruct_vki_sigset_t_79 {
1551    unsigned long sig[2] ;   1551    unsigned long sig[2] ;
1552 };   1552 };
1553 typedef struct __anonstruct_vki_sigset_t_79 vki_sigset_t;   1553 typedef struct __anonstruct_vki_sigset_t_79 vki_sigset_t;
1554 struct vki_old_sigaction {   1554 struct vki_old_sigaction {
1555    __vki_sighandler_t ksa_handler ;   1555    __vki_sighandler_t ksa_handler ;
1556    vki_old_sigset_t sa_mask ;   1556    vki_old_sigset_t sa_mask ;
1557    unsigned long sa_flags ;   1557    unsigned long sa_flags ;
1558    __vki_sigrestore_t sa_restorer ;   1558    __vki_sigrestore_t sa_restorer ;
1559 };   1559 };
1560 struct vki_sigaction_base {   1560 struct vki_sigaction_base {
1561    __vki_sighandler_t ksa_handler ;   1561    __vki_sighandler_t ksa_handler ;
1562    unsigned long sa_flags ;   1562    unsigned long sa_flags ;
1563    __vki_sigrestore_t sa_restorer ;   1563    __vki_sigrestore_t sa_restorer ;
1564    vki_sigset_t sa_mask ;   1564    vki_sigset_t sa_mask ;
1565 };   1565 };
1566 typedef struct vki_sigaction_base vki_sigaction_toK_t;   1566 typedef struct vki_sigaction_base vki_sigaction_toK_t;
1567 typedef struct vki_sigaction_base vki_sigaction_fromK_t;   1567 typedef struct vki_sigaction_base vki_sigaction_fromK_t;
1568 struct vki_sigaltstack {   1568 struct vki_sigaltstack {
1569    void *ss_sp ;   1569    void *ss_sp ;
1570    int ss_flags ;   1570    int ss_flags ;
1571    vki_size_t ss_size ;   1571    vki_size_t ss_size ;
1572 };   1572 };
1573 typedef struct vki_sigaltstack vki_stack_t;   1573 typedef struct vki_sigaltstack vki_stack_t;
1574 struct _vki_fpreg {   1574 struct _vki_fpreg {
1575    unsigned short significand[4] ;   1575    unsigned short significand[4] ;
1576    unsigned short exponent ;   1576    unsigned short exponent ;
1577 };   1577 };
1578 struct _vki_fpxreg {   1578 struct _vki_fpxreg {
1579    unsigned short significand[4] ;   1579    unsigned short significand[4] ;
1580    unsigned short exponent ;   1580    unsigned short exponent ;
1581    unsigned short padding[3] ;   1581    unsigned short padding[3] ;
1582 };   1582 };
1583 struct _vki_xmmreg {   1583 struct _vki_xmmreg {
1584    unsigned long element[4] ;   1584    unsigned long element[4] ;
1585 };   1585 };
1586 struct _vki_fpstate {   1586 struct _vki_fpstate {
1587    unsigned long cw ;   1587    unsigned long cw ;
1588    unsigned long sw ;   1588    unsigned long sw ;
1589    unsigned long tag ;   1589    unsigned long tag ;
1590    unsigned long ipoff ;   1590    unsigned long ipoff ;
1591    unsigned long cssel ;   1591    unsigned long cssel ;
1592    unsigned long dataoff ;   1592    unsigned long dataoff ;
1593    unsigned long datasel ;   1593    unsigned long datasel ;
1594    struct _vki_fpreg _st[8] ;   1594    struct _vki_fpreg _st[8] ;
1595    unsigned short status ;   1595    unsigned short status ;
1596    unsigned short magic ;   1596    unsigned short magic ;
1597    unsigned long _fxsr_env[6] ;   1597    unsigned long _fxsr_env[6] ;
1598    unsigned long mxcsr ;   1598    unsigned long mxcsr ;
1599    unsigned long reserved ;   1599    unsigned long reserved ;
1600    struct _vki_fpxreg _fxsr_st[8] ;   1600    struct _vki_fpxreg _fxsr_st[8] ;
1601    struct _vki_xmmreg _xmm[8] ;   1601    struct _vki_xmmreg _xmm[8] ;
1602    unsigned long padding[56] ;   1602    unsigned long padding[56] ;
1603 };   1603 };
1604 struct vki_sigcontext {   1604 struct vki_sigcontext {
1605    unsigned short gs ;   1605    unsigned short gs ;
1606    unsigned short __gsh ;   1606    unsigned short __gsh ;
1607    unsigned short fs ;   1607    unsigned short fs ;
1608    unsigned short __fsh ;   1608    unsigned short __fsh ;
1609    unsigned short es ;   1609    unsigned short es ;
1610    unsigned short __esh ;   1610    unsigned short __esh ;
1611    unsigned short ds ;   1611    unsigned short ds ;
1612    unsigned short __dsh ;   1612    unsigned short __dsh ;
1613    unsigned long edi ;   1613    unsigned long edi ;
1614    unsigned long esi ;   1614    unsigned long esi ;
1615    unsigned long ebp ;   1615    unsigned long ebp ;
1616    unsigned long esp ;   1616    unsigned long esp ;
1617    unsigned long ebx ;   1617    unsigned long ebx ;
1618    unsigned long edx ;   1618    unsigned long edx ;
1619    unsigned long ecx ;   1619    unsigned long ecx ;
1620    unsigned long eax ;   1620    unsigned long eax ;
1621    unsigned long trapno ;   1621    unsigned long trapno ;
1622    unsigned long err ;   1622    unsigned long err ;
1623    unsigned long eip ;   1623    unsigned long eip ;
1624    unsigned short cs ;   1624    unsigned short cs ;
1625    unsigned short __csh ;   1625    unsigned short __csh ;
1626    unsigned long eflags ;   1626    unsigned long eflags ;
1627    unsigned long esp_at_signal ;   1627    unsigned long esp_at_signal ;
1628    unsigned short ss ;   1628    unsigned short ss ;
1629    unsigned short __ssh ;   1629    unsigned short __ssh ;
1630    struct _vki_fpstate *fpstate ;   1630    struct _vki_fpstate *fpstate ;
1631    unsigned long oldmask ;   1631    unsigned long oldmask ;
1632    unsigned long cr2 ;   1632    unsigned long cr2 ;
1633 };   1633 };
1634 struct vki_f_owner_ex {   1634 struct vki_f_owner_ex {
1635    int type ;   1635    int type ;
1636    __vki_kernel_pid_t pid ;   1636    __vki_kernel_pid_t pid ;
1637 };   1637 };
1638 struct vki_stat {   1638 struct vki_stat {
1639    unsigned long st_dev ;   1639    unsigned long st_dev ;
1640    unsigned long st_ino ;   1640    unsigned long st_ino ;
1641    unsigned short st_mode ;   1641    unsigned short st_mode ;
1642    unsigned short st_nlink ;   1642    unsigned short st_nlink ;
1643    unsigned short st_uid ;   1643    unsigned short st_uid ;
1644    unsigned short st_gid ;   1644    unsigned short st_gid ;
1645    unsigned long st_rdev ;   1645    unsigned long st_rdev ;
1646    unsigned long st_size ;   1646    unsigned long st_size ;
1647    unsigned long st_blksize ;   1647    unsigned long st_blksize ;
1648    unsigned long st_blocks ;   1648    unsigned long st_blocks ;
1649    unsigned long st_atime ;   1649    unsigned long st_atime ;
1650    unsigned long st_atime_nsec ;   1650    unsigned long st_atime_nsec ;
1651    unsigned long st_mtime ;   1651    unsigned long st_mtime ;
1652    unsigned long st_mtime_nsec ;   1652    unsigned long st_mtime_nsec ;
1653    unsigned long st_ctime ;   1653    unsigned long st_ctime ;
1654    unsigned long st_ctime_nsec ;   1654    unsigned long st_ctime_nsec ;
1655    unsigned long __unused4 ;   1655    unsigned long __unused4 ;
1656    unsigned long __unused5 ;   1656    unsigned long __unused5 ;
1657 };   1657 };
1658 struct vki_stat64 {   1658 struct vki_stat64 {
1659    unsigned long long st_dev ;   1659    unsigned long long st_dev ;
1660    unsigned char __pad0[4] ;   1660    unsigned char __pad0[4] ;
1661    unsigned long __st_ino ;   1661    unsigned long __st_ino ;
1662    unsigned int st_mode ;   1662    unsigned int st_mode ;
1663    unsigned int st_nlink ;   1663    unsigned int st_nlink ;
1664    unsigned long st_uid ;   1664    unsigned long st_uid ;
1665    unsigned long st_gid ;   1665    unsigned long st_gid ;
1666    unsigned long long st_rdev ;   1666    unsigned long long st_rdev ;
1667    unsigned char __pad3[4] ;   1667    unsigned char __pad3[4] ;
1668    long long st_size ;   1668    long long st_size ;
1669    unsigned long st_blksize ;   1669    unsigned long st_blksize ;
1670    unsigned long st_blocks ;   1670    unsigned long st_blocks ;
1671    unsigned long __pad4 ;   1671    unsigned long __pad4 ;
1672    unsigned long st_atime ;   1672    unsigned long st_atime ;
1673    unsigned long st_atime_nsec ;   1673    unsigned long st_atime_nsec ;
1674    unsigned long st_mtime ;   1674    unsigned long st_mtime ;
1675    unsigned int st_mtime_nsec ;   1675    unsigned int st_mtime_nsec ;
1676    unsigned long st_ctime ;   1676    unsigned long st_ctime ;
1677    unsigned long st_ctime_nsec ;   1677    unsigned long st_ctime_nsec ;
1678    unsigned long long st_ino ;   1678    unsigned long long st_ino ;
1679 };   1679 };
1680 struct vki_statfs {   1680 struct vki_statfs {
1681    __vki_u32 f_type ;   1681    __vki_u32 f_type ;
1682    __vki_u32 f_bsize ;   1682    __vki_u32 f_bsize ;
1683    __vki_u32 f_blocks ;   1683    __vki_u32 f_blocks ;
1684    __vki_u32 f_bfree ;   1684    __vki_u32 f_bfree ;
1685    __vki_u32 f_bavail ;   1685    __vki_u32 f_bavail ;
1686    __vki_u32 f_files ;   1686    __vki_u32 f_files ;
1687    __vki_u32 f_ffree ;   1687    __vki_u32 f_ffree ;
1688    __vki_kernel_fsid_t f_fsid ;   1688    __vki_kernel_fsid_t f_fsid ;
1689    __vki_u32 f_namelen ;   1689    __vki_u32 f_namelen ;
1690    __vki_u32 f_frsize ;   1690    __vki_u32 f_frsize ;
1691    __vki_u32 f_spare[5] ;   1691    __vki_u32 f_spare[5] ;
1692 };   1692 };
1693 struct vki_winsize {   1693 struct vki_winsize {
1694    unsigned short ws_row ;   1694    unsigned short ws_row ;
1695    unsigned short ws_col ;   1695    unsigned short ws_col ;
1696    unsigned short ws_xpixel ;   1696    unsigned short ws_xpixel ;
1697    unsigned short ws_ypixel ;   1697    unsigned short ws_ypixel ;
1698 };   1698 };
1699 struct vki_termio {   1699 struct vki_termio {
1700    unsigned short c_iflag ;   1700    unsigned short c_iflag ;
1701    unsigned short c_oflag ;   1701    unsigned short c_oflag ;
1702    unsigned short c_cflag ;   1702    unsigned short c_cflag ;
1703    unsigned short c_lflag ;   1703    unsigned short c_lflag ;
1704    unsigned char c_line ;   1704    unsigned char c_line ;
1705    unsigned char c_cc[8] ;   1705    unsigned char c_cc[8] ;
1706 };   1706 };
1707 typedef unsigned char vki_cc_t;   1707 typedef unsigned char vki_cc_t;
1708 typedef unsigned int vki_tcflag_t;   1708 typedef unsigned int vki_tcflag_t;
1709 struct vki_termios {   1709 struct vki_termios {
1710    vki_tcflag_t c_iflag ;   1710    vki_tcflag_t c_iflag ;
1711    vki_tcflag_t c_oflag ;   1711    vki_tcflag_t c_oflag ;
1712    vki_tcflag_t c_cflag ;   1712    vki_tcflag_t c_cflag ;
1713    vki_tcflag_t c_lflag ;   1713    vki_tcflag_t c_lflag ;
1714    vki_cc_t c_line ;   1714    vki_cc_t c_line ;
1715    vki_cc_t c_cc[19] ;   1715    vki_cc_t c_cc[19] ;
1716 };   1716 };
1717 struct vki_pollfd {   1717 struct vki_pollfd {
1718    int fd ;   1718    int fd ;
1719    short events ;   1719    short events ;
1720    short revents ;   1720    short revents ;
1721 };   1721 };
1722 struct vki_user_i387_struct {   1722 struct vki_user_i387_struct {
1723    long cwd ;   1723    long cwd ;
1724    long swd ;   1724    long swd ;
1725    long twd ;   1725    long twd ;
1726    long fip ;   1726    long fip ;
1727    long fcs ;   1727    long fcs ;
1728    long foo ;   1728    long foo ;
1729    long fos ;   1729    long fos ;
1730    long st_space[20] ;   1730    long st_space[20] ;
1731 };   1731 };
1732 struct vki_user_fxsr_struct {   1732 struct vki_user_fxsr_struct {
1733    unsigned short cwd ;   1733    unsigned short cwd ;
1734    unsigned short swd ;   1734    unsigned short swd ;
1735    unsigned short twd ;   1735    unsigned short twd ;
1736    unsigned short fop ;   1736    unsigned short fop ;
1737    long fip ;   1737    long fip ;
1738    long fcs ;   1738    long fcs ;
1739    long foo ;   1739    long foo ;
1740    long fos ;   1740    long fos ;
1741    long mxcsr ;   1741    long mxcsr ;
1742    long reserved ;   1742    long reserved ;
1743    long st_space[32] ;   1743    long st_space[32] ;
1744    long xmm_space[32] ;   1744    long xmm_space[32] ;
1745    long padding[56] ;   1745    long padding[56] ;
1746 };   1746 };
1747 struct vki_user_regs_struct {   1747 struct vki_user_regs_struct {
1748    long ebx ;   1748    long ebx ;
1749    long ecx ;   1749    long ecx ;
1750    long edx ;   1750    long edx ;
1751    long esi ;   1751    long esi ;
1752    long edi ;   1752    long edi ;
1753    long ebp ;   1753    long ebp ;
1754    long eax ;   1754    long eax ;
1755    unsigned short ds ;   1755    unsigned short ds ;
1756    unsigned short __ds ;   1756    unsigned short __ds ;
1757    unsigned short es ;   1757    unsigned short es ;
1758    unsigned short __es ;   1758    unsigned short __es ;
1759    unsigned short fs ;   1759    unsigned short fs ;
1760    unsigned short __fs ;   1760    unsigned short __fs ;
1761    unsigned short gs ;   1761    unsigned short gs ;
1762    unsigned short __gs ;   1762    unsigned short __gs ;
1763    long orig_eax ;   1763    long orig_eax ;
1764    long eip ;   1764    long eip ;
1765    unsigned short cs ;   1765    unsigned short cs ;
1766    unsigned short __cs ;   1766    unsigned short __cs ;
1767    long eflags ;   1767    long eflags ;
1768    long esp ;   1768    long esp ;
1769    unsigned short ss ;   1769    unsigned short ss ;
1770    unsigned short __ss ;   1770    unsigned short __ss ;
1771 };   1771 };
1772 typedef unsigned long vki_elf_greg_t;   1772 typedef unsigned long vki_elf_greg_t;
1773 typedef vki_elf_greg_t vki_elf_gregset_t[sizeof(struct vki_user_regs_struct ) / sizeof(vki_elf_greg_t )];   1773 typedef vki_elf_greg_t vki_elf_gregset_t[sizeof(struct vki_user_regs_struct ) / sizeof(vki_elf_greg_t )];
1774 typedef struct vki_user_i387_struct vki_elf_fpregset_t;   1774 typedef struct vki_user_i387_struct vki_elf_fpregset_t;
1775 typedef struct vki_user_fxsr_struct vki_elf_fpxregset_t;   1775 typedef struct vki_user_fxsr_struct vki_elf_fpxregset_t;
1776 struct vki_ucontext {   1776 struct vki_ucontext {
1777    unsigned long uc_flags ;   1777    unsigned long uc_flags ;
1778    struct vki_ucontext *uc_link ;   1778    struct vki_ucontext *uc_link ;
1779    vki_stack_t uc_stack ;   1779    vki_stack_t uc_stack ;
1780    struct vki_sigcontext uc_mcontext ;   1780    struct vki_sigcontext uc_mcontext ;
1781    vki_sigset_t uc_sigmask ;   1781    vki_sigset_t uc_sigmask ;
1782 };   1782 };
1783 struct vki_user_desc {   1783 struct vki_user_desc {
1784    unsigned int entry_number ;   1784    unsigned int entry_number ;
1785    unsigned long base_addr ;   1785    unsigned long base_addr ;
1786    unsigned int limit ;   1786    unsigned int limit ;
1787    unsigned int seg_32bit : 1 ;   1787    unsigned int seg_32bit : 1 ;
1788    unsigned int contents : 2 ;   1788    unsigned int contents : 2 ;
1789    unsigned int read_exec_only : 1 ;   1789    unsigned int read_exec_only : 1 ;
1790    unsigned int limit_in_pages : 1 ;   1790    unsigned int limit_in_pages : 1 ;
1791    unsigned int seg_not_present : 1 ;   1791    unsigned int seg_not_present : 1 ;
1792    unsigned int useable : 1 ;   1792    unsigned int useable : 1 ;
1793    unsigned int reserved : 25 ;   1793    unsigned int reserved : 25 ;
1794 };   1794 };
1795 typedef struct vki_user_desc vki_modify_ldt_t;   1795 typedef struct vki_user_desc vki_modify_ldt_t;
1796 struct vki_ipc64_perm {   1796 struct vki_ipc64_perm {
1797    __vki_kernel_key_t key ;   1797    __vki_kernel_key_t key ;
1798    __vki_kernel_uid32_t uid ;   1798    __vki_kernel_uid32_t uid ;
1799    __vki_kernel_gid32_t gid ;   1799    __vki_kernel_gid32_t gid ;
1800    __vki_kernel_uid32_t cuid ;   1800    __vki_kernel_uid32_t cuid ;
1801    __vki_kernel_gid32_t cgid ;   1801    __vki_kernel_gid32_t cgid ;
1802    __vki_kernel_mode_t mode ;   1802    __vki_kernel_mode_t mode ;
1803    unsigned short __pad1 ;   1803    unsigned short __pad1 ;
1804    unsigned short seq ;   1804    unsigned short seq ;
1805    unsigned short __pad2 ;   1805    unsigned short __pad2 ;
1806    unsigned long __unused1 ;   1806    unsigned long __unused1 ;
1807    unsigned long __unused2 ;   1807    unsigned long __unused2 ;
1808 };   1808 };
1809 struct vki_semid64_ds {   1809 struct vki_semid64_ds {
1810    struct vki_ipc64_perm sem_perm ;   1810    struct vki_ipc64_perm sem_perm ;
1811    __vki_kernel_time_t sem_otime ;   1811    __vki_kernel_time_t sem_otime ;
1812    unsigned long __unused1 ;   1812    unsigned long __unused1 ;
1813    __vki_kernel_time_t sem_ctime ;   1813    __vki_kernel_time_t sem_ctime ;
1814    unsigned long __unused2 ;   1814    unsigned long __unused2 ;
1815    unsigned long sem_nsems ;   1815    unsigned long sem_nsems ;
1816    unsigned long __unused3 ;   1816    unsigned long __unused3 ;
1817    unsigned long __unused4 ;   1817    unsigned long __unused4 ;
1818 };   1818 };
1819 struct vki_msqid64_ds {   1819 struct vki_msqid64_ds {
1820    struct vki_ipc64_perm msg_perm ;   1820    struct vki_ipc64_perm msg_perm ;
1821    __vki_kernel_time_t msg_stime ;   1821    __vki_kernel_time_t msg_stime ;
1822    unsigned long __unused1 ;   1822    unsigned long __unused1 ;
1823    __vki_kernel_time_t msg_rtime ;   1823    __vki_kernel_time_t msg_rtime ;
1824    unsigned long __unused2 ;   1824    unsigned long __unused2 ;
1825    __vki_kernel_time_t msg_ctime ;   1825    __vki_kernel_time_t msg_ctime ;
1826    unsigned long __unused3 ;   1826    unsigned long __unused3 ;
1827    unsigned long msg_cbytes ;   1827    unsigned long msg_cbytes ;
1828    unsigned long msg_qnum ;   1828    unsigned long msg_qnum ;
1829    unsigned long msg_qbytes ;   1829    unsigned long msg_qbytes ;
1830    __vki_kernel_pid_t msg_lspid ;   1830    __vki_kernel_pid_t msg_lspid ;
1831    __vki_kernel_pid_t msg_lrpid ;   1831    __vki_kernel_pid_t msg_lrpid ;
1832    unsigned long __unused4 ;   1832    unsigned long __unused4 ;
1833    unsigned long __unused5 ;   1833    unsigned long __unused5 ;
1834 };   1834 };
1835 struct vki_msgbuf;   1835 struct vki_msgbuf;
1836 struct vki_ipc_kludge {   1836 struct vki_ipc_kludge {
1837    struct vki_msgbuf *msgp ;   1837    struct vki_msgbuf *msgp ;
1838    long msgtyp ;   1838    long msgtyp ;
1839 };   1839 };
1840 struct vki_shmid64_ds {   1840 struct vki_shmid64_ds {
1841    struct vki_ipc64_perm shm_perm ;   1841    struct vki_ipc64_perm shm_perm ;
1842    vki_size_t shm_segsz ;   1842    vki_size_t shm_segsz ;
1843    __vki_kernel_time_t shm_atime ;   1843    __vki_kernel_time_t shm_atime ;
1844    unsigned long __unused1 ;   1844    unsigned long __unused1 ;
1845    __vki_kernel_time_t shm_dtime ;   1845    __vki_kernel_time_t shm_dtime ;
1846    unsigned long __unused2 ;   1846    unsigned long __unused2 ;
1847    __vki_kernel_time_t shm_ctime ;   1847    __vki_kernel_time_t shm_ctime ;
1848    unsigned long __unused3 ;   1848    unsigned long __unused3 ;
1849    __vki_kernel_pid_t shm_cpid ;   1849    __vki_kernel_pid_t shm_cpid ;
1850    __vki_kernel_pid_t shm_lpid ;   1850    __vki_kernel_pid_t shm_lpid ;
1851    unsigned long shm_nattch ;   1851    unsigned long shm_nattch ;
1852    unsigned long __unused4 ;   1852    unsigned long __unused4 ;
1853    unsigned long __unused5 ;   1853    unsigned long __unused5 ;
1854 };   1854 };
1855 struct vki_shminfo64 {   1855 struct vki_shminfo64 {
1856    unsigned long shmmax ;   1856    unsigned long shmmax ;
1857    unsigned long shmmin ;   1857    unsigned long shmmin ;
1858    unsigned long shmmni ;   1858    unsigned long shmmni ;
1859    unsigned long shmseg ;   1859    unsigned long shmseg ;
1860    unsigned long shmall ;   1860    unsigned long shmall ;
1861    unsigned long __unused1 ;   1861    unsigned long __unused1 ;
1862    unsigned long __unused2 ;   1862    unsigned long __unused2 ;
1863    unsigned long __unused3 ;   1863    unsigned long __unused3 ;
1864    unsigned long __unused4 ;   1864    unsigned long __unused4 ;
1865 };   1865 };
1866 struct vki_vm86_regs {   1866 struct vki_vm86_regs {
1867    long ebx ;   1867    long ebx ;
1868    long ecx ;   1868    long ecx ;
1869    long edx ;   1869    long edx ;
1870    long esi ;   1870    long esi ;
1871    long edi ;   1871    long edi ;
1872    long ebp ;   1872    long ebp ;
1873    long eax ;   1873    long eax ;
1874    long __null_ds ;   1874    long __null_ds ;
1875    long __null_es ;   1875    long __null_es ;
1876    long __null_fs ;   1876    long __null_fs ;
1877    long __null_gs ;   1877    long __null_gs ;
1878    long orig_eax ;   1878    long orig_eax ;
1879    long eip ;   1879    long eip ;
1880    unsigned short cs ;   1880    unsigned short cs ;
1881    unsigned short __csh ;   1881    unsigned short __csh ;
1882    long eflags ;   1882    long eflags ;
1883    long esp ;   1883    long esp ;
1884    unsigned short ss ;   1884    unsigned short ss ;
1885    unsigned short __ssh ;   1885    unsigned short __ssh ;
1886    unsigned short es ;   1886    unsigned short es ;
1887    unsigned short __esh ;   1887    unsigned short __esh ;
1888    unsigned short ds ;   1888    unsigned short ds ;
1889    unsigned short __dsh ;   1889    unsigned short __dsh ;
1890    unsigned short fs ;   1890    unsigned short fs ;
1891    unsigned short __fsh ;   1891    unsigned short __fsh ;
1892    unsigned short gs ;   1892    unsigned short gs ;
1893    unsigned short __gsh ;   1893    unsigned short __gsh ;
1894 };   1894 };
1895 struct vki_revectored_struct {   1895 struct vki_revectored_struct {
1896    unsigned long __map[8] ;   1896    unsigned long __map[8] ;
1897 };   1897 };
1898 struct vki_vm86_struct {   1898 struct vki_vm86_struct {
1899    struct vki_vm86_regs regs ;   1899    struct vki_vm86_regs regs ;
1900    unsigned long flags ;   1900    unsigned long flags ;
1901    unsigned long screen_bitmap ;   1901    unsigned long screen_bitmap ;
1902    unsigned long cpu_type ;   1902    unsigned long cpu_type ;
1903    struct vki_revectored_struct int_revectored ;   1903    struct vki_revectored_struct int_revectored ;
1904    struct vki_revectored_struct int21_revectored ;   1904    struct vki_revectored_struct int21_revectored ;
1905 };   1905 };
1906 struct vki_vm86plus_info_struct {   1906 struct vki_vm86plus_info_struct {
1907    unsigned long force_return_for_pic : 1 ;   1907    unsigned long force_return_for_pic : 1 ;
1908    unsigned long vm86dbg_active : 1 ;   1908    unsigned long vm86dbg_active : 1 ;
1909    unsigned long vm86dbg_TFpendig : 1 ;   1909    unsigned long vm86dbg_TFpendig : 1 ;
1910    unsigned long unused : 28 ;   1910    unsigned long unused : 28 ;
1911    unsigned long is_vm86pus : 1 ;   1911    unsigned long is_vm86pus : 1 ;
1912    unsigned char vm86dbg_intxxtab[32] ;   1912    unsigned char vm86dbg_intxxtab[32] ;
1913 };   1913 };
1914 struct vki_vm86plus_struct {   1914 struct vki_vm86plus_struct {
1915    struct vki_vm86_regs regs ;   1915    struct vki_vm86_regs regs ;
1916    unsigned long flags ;   1916    unsigned long flags ;
1917    unsigned long screen_bitmap ;   1917    unsigned long screen_bitmap ;
1918    unsigned long cpu_type ;   1918    unsigned long cpu_type ;
1919    struct vki_revectored_struct int_revectored ;   1919    struct vki_revectored_struct int_revectored ;
1920    struct vki_revectored_struct int21_revectored ;   1920    struct vki_revectored_struct int21_revectored ;
1921    struct vki_vm86plus_info_struct vm86plus ;   1921    struct vki_vm86plus_info_struct vm86plus ;
1922 };   1922 };
1923 typedef __vki_s32 vki_int32_t;   1923 typedef __vki_s32 vki_int32_t;
1924 typedef __vki_s64 vki_int64_t;   1924 typedef __vki_s64 vki_int64_t;
1925 typedef __vki_u8 vki_uint8_t;   1925 typedef __vki_u8 vki_uint8_t;
1926 typedef __vki_u16 vki_uint16_t;   1926 typedef __vki_u16 vki_uint16_t;
1927 typedef __vki_u32 vki_uint32_t;   1927 typedef __vki_u32 vki_uint32_t;
1928 typedef __vki_u16 __vki_le16;   1928 typedef __vki_u16 __vki_le16;
1929 struct vki_sysinfo {   1929 struct vki_sysinfo {
1930    long uptime ;   1930    long uptime ;
1931    unsigned long loads[3] ;   1931    unsigned long loads[3] ;
1932    unsigned long totalram ;   1932    unsigned long totalram ;
1933    unsigned long freeram ;   1933    unsigned long freeram ;
1934    unsigned long sharedram ;   1934    unsigned long sharedram ;
1935    unsigned long bufferram ;   1935    unsigned long bufferram ;
1936    unsigned long totalswap ;   1936    unsigned long totalswap ;
1937    unsigned long freeswap ;   1937    unsigned long freeswap ;
1938    unsigned short procs ;   1938    unsigned short procs ;
1939    unsigned short pad ;   1939    unsigned short pad ;
1940    unsigned long totalhigh ;   1940    unsigned long totalhigh ;
1941    unsigned long freehigh ;   1941    unsigned long freehigh ;
1942    unsigned int mem_unit ;   1942    unsigned int mem_unit ;
1943    char _f[(20U - 2U * sizeof(long )) - sizeof(int )] ;   1943    char _f[(20U - 2U * sizeof(long )) - sizeof(int )] ;
1944 };   1944 };
1945 struct vki_timespec {   1945 struct vki_timespec {
1946    vki_time_t tv_sec ;   1946    vki_time_t tv_sec ;
1947    long tv_nsec ;   1947    long tv_nsec ;
1948 };   1948 };
1949 struct vki_timeval {   1949 struct vki_timeval {
1950    vki_time_t tv_sec ;   1950    vki_time_t tv_sec ;
1951    vki_suseconds_t tv_usec ;   1951    vki_suseconds_t tv_usec ;
1952 };   1952 };
1953 struct vki_timezone {   1953 struct vki_timezone {
1954    int tz_minuteswest ;   1954    int tz_minuteswest ;
1955    int tz_dsttime ;   1955    int tz_dsttime ;
1956 };   1956 };
1957 struct vki_itimerspec {   1957 struct vki_itimerspec {
1958    struct vki_timespec it_interval ;   1958    struct vki_timespec it_interval ;
1959    struct vki_timespec it_value ;   1959    struct vki_timespec it_value ;
1960 };   1960 };
1961 struct vki_itimerval {   1961 struct vki_itimerval {
1962    struct vki_timeval it_interval ;   1962    struct vki_timeval it_interval ;
1963    struct vki_timeval it_value ;   1963    struct vki_timeval it_value ;
1964 };   1964 };
1965 struct vki_timex {   1965 struct vki_timex {
1966    unsigned int modes ;   1966    unsigned int modes ;
1967    long offset ;   1967    long offset ;
1968    long freq ;   1968    long freq ;
1969    long maxerror ;   1969    long maxerror ;
1970    long esterror ;   1970    long esterror ;
1971    int status ;   1971    int status ;
1972    long constant ;   1972    long constant ;
1973    long precision ;   1973    long precision ;
1974    long tolerance ;   1974    long tolerance ;
1975    struct vki_timeval time ;   1975    struct vki_timeval time ;
1976    long tick ;   1976    long tick ;
1977    long ppsfreq ;   1977    long ppsfreq ;
1978    long jitter ;   1978    long jitter ;
1979    int shift ;   1979    int shift ;
1980    long stabil ;   1980    long stabil ;
1981    long jitcnt ;   1981    long jitcnt ;
1982    long calcnt ;   1982    long calcnt ;
1983    long errcnt ;   1983    long errcnt ;
1984    long stbcnt ;   1984    long stbcnt ;
1985    int  : 32 ;   1985    int  : 32 ;
1986    int  : 32 ;   1986    int  : 32 ;
1987    int  : 32 ;   1987    int  : 32 ;
1988    int  : 32 ;   1988    int  : 32 ;
1989    int  : 32 ;   1989    int  : 32 ;
1990    int  : 32 ;   1990    int  : 32 ;
1991    int  : 32 ;   1991    int  : 32 ;
1992    int  : 32 ;   1992    int  : 32 ;
1993    int  : 32 ;   1993    int  : 32 ;
1994    int  : 32 ;   1994    int  : 32 ;
1995    int  : 32 ;   1995    int  : 32 ;
1996    int  : 32 ;   1996    int  : 32 ;
1997 };   1997 };
1998 struct vki_tms {   1998 struct vki_tms {
1999    vki_clock_t tms_utime ;   1999    vki_clock_t tms_utime ;
2000    vki_clock_t tms_stime ;   2000    vki_clock_t tms_stime ;
2001    vki_clock_t tms_cutime ;   2001    vki_clock_t tms_cutime ;
2002    vki_clock_t tms_cstime ;   2002    vki_clock_t tms_cstime ;
2003 };   2003 };
2004 struct vki_utimbuf {   2004 struct vki_utimbuf {
2005    vki_time_t actime ;   2005    vki_time_t actime ;
2006    vki_time_t modtime ;   2006    vki_time_t modtime ;
2007 };   2007 };
2008 struct vki_sched_param {   2008 struct vki_sched_param {
2009    int sched_priority ;   2009    int sched_priority ;
2010 };   2010 };
2011 union vki_sigval {   2011 union vki_sigval {
2012    int sival_int ;   2012    int sival_int ;
2013    void *sival_ptr ;   2013    void *sival_ptr ;
2014 };   2014 };
2015 typedef union vki_sigval vki_sigval_t;   2015 typedef union vki_sigval vki_sigval_t;
2016 struct __anonstruct__kill_81 {   2016 struct __anonstruct__kill_81 {
2017    vki_pid_t _pid ;   2017    vki_pid_t _pid ;
2018    vki_uid_t _uid ;   2018    vki_uid_t _uid ;
2019 };   2019 };
2020 struct __anonstruct__timer_82 {   2020 struct __anonstruct__timer_82 {
2021    vki_timer_t _tid ;   2021    vki_timer_t _tid ;
2022    int _overrun ;   2022    int _overrun ;
2023    char _pad[sizeof(vki_uid_t ) - sizeof(int )] ;   2023    char _pad[sizeof(vki_uid_t ) - sizeof(int )] ;
2024    vki_sigval_t _sigval ;   2024    vki_sigval_t _sigval ;
2025    int _sys_private ;   2025    int _sys_private ;
2026 };   2026 };
2027 struct __anonstruct__rt_83 {   2027 struct __anonstruct__rt_83 {
2028    vki_pid_t _pid ;   2028    vki_pid_t _pid ;
2029    vki_uid_t _uid ;   2029    vki_uid_t _uid ;
2030    vki_sigval_t _sigval ;   2030    vki_sigval_t _sigval ;
2031 };   2031 };
2032 struct __anonstruct__sigchld_84 {   2032 struct __anonstruct__sigchld_84 {
2033    vki_pid_t _pid ;   2033    vki_pid_t _pid ;
2034    vki_uid_t _uid ;   2034    vki_uid_t _uid ;
2035    int _status ;   2035    int _status ;
2036    vki_clock_t _utime ;   2036    vki_clock_t _utime ;
2037    vki_clock_t _stime ;   2037    vki_clock_t _stime ;
2038 };   2038 };
2039 struct __anonstruct__sigfault_85 {   2039 struct __anonstruct__sigfault_85 {
2040    void *_addr ;   2040    void *_addr ;
2041 };   2041 };
2042 struct __anonstruct__sigpoll_86 {   2042 struct __anonstruct__sigpoll_86 {
2043    long _band ;   2043    long _band ;
2044    int _fd ;   2044    int _fd ;
2045 };   2045 };
2046 union __anonunion__sifields_80 {   2046 union __anonunion__sifields_80 {
2047    int _pad[(128U - 3U * sizeof(int )) / sizeof(int )] ;   2047    int _pad[(128U - 3U * sizeof(int )) / sizeof(int )] ;
2048    struct __anonstruct__kill_81 _kill ;   2048    struct __anonstruct__kill_81 _kill ;
2049    struct __anonstruct__timer_82 _timer ;   2049    struct __anonstruct__timer_82 _timer ;
2050    struct __anonstruct__rt_83 _rt ;   2050    struct __anonstruct__rt_83 _rt ;
2051    struct __anonstruct__sigchld_84 _sigchld ;   2051    struct __anonstruct__sigchld_84 _sigchld ;
2052    struct __anonstruct__sigfault_85 _sigfault ;   2052    struct __anonstruct__sigfault_85 _sigfault ;
2053    struct __anonstruct__sigpoll_86 _sigpoll ;   2053    struct __anonstruct__sigpoll_86 _sigpoll ;
2054 };   2054 };
2055 struct vki_siginfo {   2055 struct vki_siginfo {
2056    int si_signo ;   2056    int si_signo ;
2057    int si_errno ;   2057    int si_errno ;
2058    int si_code ;   2058    int si_code ;
2059    union __anonunion__sifields_80 _sifields ;   2059    union __anonunion__sifields_80 _sifields ;
2060 };   2060 };
2061 typedef struct vki_siginfo vki_siginfo_t;   2061 typedef struct vki_siginfo vki_siginfo_t;
2062 struct __anonstruct__sigev_thread_88 {   2062 struct __anonstruct__sigev_thread_88 {
2063    void (*_function)(vki_sigval_t  ) ;   2063    void (*_function)(vki_sigval_t  ) ;
2064    void *_attribute ;   2064    void *_attribute ;
2065 };   2065 };
2066 union __anonunion__sigev_un_87 {   2066 union __anonunion__sigev_un_87 {
2067    int _pad[(64U - (sizeof(int ) * 2U + sizeof(vki_sigval_t ))) / sizeof(int )] ;   2067    int _pad[(64U - (sizeof(int ) * 2U + sizeof(vki_sigval_t ))) / sizeof(int )] ;
2068    int _tid ;   2068    int _tid ;
2069    struct __anonstruct__sigev_thread_88 _sigev_thread ;   2069    struct __anonstruct__sigev_thread_88 _sigev_thread ;
2070 };   2070 };
2071 struct vki_sigevent {   2071 struct vki_sigevent {
2072    vki_sigval_t sigev_value ;   2072    vki_sigval_t sigev_value ;
2073    int sigev_signo ;   2073    int sigev_signo ;
2074    int sigev_notify ;   2074    int sigev_notify ;
2075    union __anonunion__sigev_un_87 _sigev_un ;   2075    union __anonunion__sigev_un_87 _sigev_un ;
2076 };   2076 };
2077 typedef struct vki_sigevent vki_sigevent_t;   2077 typedef struct vki_sigevent vki_sigevent_t;
2078 enum vki_sock_type {   2078 enum vki_sock_type {
2079     VKI_SOCK_STREAM = 1   2079     VKI_SOCK_STREAM = 1
2080 } ;   2080 } ;
2081 struct vki_iovec {   2081 struct vki_iovec {
2082    void *iov_base ;   2082    void *iov_base ;
2083    __vki_kernel_size_t iov_len ;   2083    __vki_kernel_size_t iov_len ;
2084 };   2084 };
2085 typedef unsigned short vki_sa_family_t;   2085 typedef unsigned short vki_sa_family_t;
2086 struct vki_sockaddr {   2086 struct vki_sockaddr {
2087    vki_sa_family_t sa_family ;   2087    vki_sa_family_t sa_family ;
2088    char sa_data[14] ;   2088    char sa_data[14] ;
2089 };   2089 };
2090 struct vki_msghdr {   2090 struct vki_msghdr {
2091    void *msg_name ;   2091    void *msg_name ;
2092    int msg_namelen ;   2092    int msg_namelen ;
2093    struct vki_iovec *msg_iov ;   2093    struct vki_iovec *msg_iov ;
2094    __vki_kernel_size_t msg_iovlen ;   2094    __vki_kernel_size_t msg_iovlen ;
2095    void *msg_control ;   2095    void *msg_control ;
2096    __vki_kernel_size_t msg_controllen ;   2096    __vki_kernel_size_t msg_controllen ;
2097    unsigned int msg_flags ;   2097    unsigned int msg_flags ;
2098 };   2098 };
2099 struct vki_mmsghdr {   2099 struct vki_mmsghdr {
2100    struct vki_msghdr msg_hdr ;   2100    struct vki_msghdr msg_hdr ;
2101    unsigned int msg_len ;   2101    unsigned int msg_len ;
2102 };   2102 };
2103 struct vki_cmsghdr {   2103 struct vki_cmsghdr {
2104    __vki_kernel_size_t cmsg_len ;   2104    __vki_kernel_size_t cmsg_len ;
2105    int cmsg_level ;   2105    int cmsg_level ;
2106    int cmsg_type ;   2106    int cmsg_type ;
2107 };   2107 };
2108 struct vki_in_addr {   2108 struct vki_in_addr {
2109    __vki_u32 s_addr ;   2109    __vki_u32 s_addr ;
2110 };   2110 };
2111 struct vki_sockaddr_in {   2111 struct vki_sockaddr_in {
2112    vki_sa_family_t sin_family ;   2112    vki_sa_family_t sin_family ;
2113    unsigned short sin_port ;   2113    unsigned short sin_port ;
2114    struct vki_in_addr sin_addr ;   2114    struct vki_in_addr sin_addr ;
2115    unsigned char __pad[((16U - sizeof(short )) - sizeof(unsigned short )) - sizeof(struct vki_in_addr )] ;   2115    unsigned char __pad[((16U - sizeof(short )) - sizeof(unsigned short )) - sizeof(struct vki_in_addr )] ;
2116 };   2116 };
2117 union __anonunion_vki_in6_u_89 {   2117 union __anonunion_vki_in6_u_89 {
2118    __vki_u8 u6_addr8[16] ;   2118    __vki_u8 u6_addr8[16] ;
2119    __vki_u16 u6_addr16[8] ;   2119    __vki_u16 u6_addr16[8] ;
2120    __vki_u32 u6_addr32[4] ;   2120    __vki_u32 u6_addr32[4] ;
2121 };   2121 };
2122 struct vki_in6_addr {   2122 struct vki_in6_addr {
2123    union __anonunion_vki_in6_u_89 vki_in6_u ;   2123    union __anonunion_vki_in6_u_89 vki_in6_u ;
2124 };   2124 };
2125 struct vki_sockaddr_in6 {   2125 struct vki_sockaddr_in6 {
2126    unsigned short sin6_family ;   2126    unsigned short sin6_family ;
2127    __vki_u16 sin6_port ;   2127    __vki_u16 sin6_port ;
2128    __vki_u32 sin6_flowinfo ;   2128    __vki_u32 sin6_flowinfo ;
2129    struct vki_in6_addr sin6_addr ;   2129    struct vki_in6_addr sin6_addr ;
2130    __vki_u32 sin6_scope_id ;   2130    __vki_u32 sin6_scope_id ;
2131 };   2131 };
2132 struct vki_sockaddr_un {   2132 struct vki_sockaddr_un {
2133    vki_sa_family_t sun_family ;   2133    vki_sa_family_t sun_family ;
2134    char sun_path[108] ;   2134    char sun_path[108] ;
2135 };   2135 };
2136 struct vki_ifmap {   2136 struct vki_ifmap {
2137    unsigned long mem_start ;   2137    unsigned long mem_start ;
2138    unsigned long mem_end ;   2138    unsigned long mem_end ;
2139    unsigned short base_addr ;   2139    unsigned short base_addr ;
2140    unsigned char irq ;   2140    unsigned char irq ;
2141    unsigned char dma ;   2141    unsigned char dma ;
2142    unsigned char port ;   2142    unsigned char port ;
2143 };   2143 };
2144 union __anonunion_ifs_ifsu_90 {   2144 union __anonunion_ifs_ifsu_90 {
2145    void *raw_hdlc ;   2145    void *raw_hdlc ;
2146    void *cisco ;   2146    void *cisco ;
2147    void *fr ;   2147    void *fr ;
2148    void *fr_pvc ;   2148    void *fr_pvc ;
2149    void *fr_pvc_info ;   2149    void *fr_pvc_info ;
2150    void *sync ;   2150    void *sync ;
2151    void *te1 ;   2151    void *te1 ;
2152 };   2152 };
2153 struct vki_if_settings {   2153 struct vki_if_settings {
2154    unsigned int type ;   2154    unsigned int type ;
2155    unsigned int size ;   2155    unsigned int size ;
2156    union __anonunion_ifs_ifsu_90 ifs_ifsu ;   2156    union __anonunion_ifs_ifsu_90 ifs_ifsu ;
2157 };   2157 };
2158 union __anonunion_ifr_ifrn_91 {   2158 union __anonunion_ifr_ifrn_91 {
2159    char ifrn_name[16] ;   2159    char ifrn_name[16] ;
2160 };   2160 };
2161 union __anonunion_ifr_ifru_92 {   2161 union __anonunion_ifr_ifru_92 {
2162    struct vki_sockaddr ifru_addr ;   2162    struct vki_sockaddr ifru_addr ;
2163    struct vki_sockaddr ifru_dstaddr ;   2163    struct vki_sockaddr ifru_dstaddr ;
2164    struct vki_sockaddr ifru_broadaddr ;   2164    struct vki_sockaddr ifru_broadaddr ;
2165    struct vki_sockaddr ifru_netmask ;   2165    struct vki_sockaddr ifru_netmask ;
2166    struct vki_sockaddr ifru_hwaddr ;   2166    struct vki_sockaddr ifru_hwaddr ;
2167    short ifru_flags ;   2167    short ifru_flags ;
2168    int ifru_ivalue ;   2168    int ifru_ivalue ;
2169    int ifru_mtu ;   2169    int ifru_mtu ;
2170    struct vki_ifmap ifru_map ;   2170    struct vki_ifmap ifru_map ;
2171    char ifru_slave[16] ;   2171    char ifru_slave[16] ;
2172    char ifru_newname[16] ;   2172    char ifru_newname[16] ;
2173    void *ifru_data ;   2173    void *ifru_data ;
2174    struct vki_if_settings ifru_settings ;   2174    struct vki_if_settings ifru_settings ;
2175 };   2175 };
2176 struct vki_ifreq {   2176 struct vki_ifreq {
2177    union __anonunion_ifr_ifrn_91 ifr_ifrn ;   2177    union __anonunion_ifr_ifrn_91 ifr_ifrn ;
2178    union __anonunion_ifr_ifru_92 ifr_ifru ;   2178    union __anonunion_ifr_ifru_92 ifr_ifru ;
2179 };   2179 };
2180 union __anonunion_ifc_ifcu_93 {   2180 union __anonunion_ifc_ifcu_93 {
2181    char *ifcu_buf ;   2181    char *ifcu_buf ;
2182    struct vki_ifreq *ifcu_req ;   2182    struct vki_ifreq *ifcu_req ;
2183 };   2183 };
2184 struct vki_ifconf {   2184 struct vki_ifconf {
2185    int ifc_len ;   2185    int ifc_len ;
2186    union __anonunion_ifc_ifcu_93 ifc_ifcu ;   2186    union __anonunion_ifc_ifcu_93 ifc_ifcu ;
2187 };   2187 };
2188 struct vki_arpreq {   2188 struct vki_arpreq {
2189    struct vki_sockaddr arp_pa ;   2189    struct vki_sockaddr arp_pa ;
2190    struct vki_sockaddr arp_ha ;   2190    struct vki_sockaddr arp_ha ;
2191    int arp_flags ;   2191    int arp_flags ;
2192    struct vki_sockaddr arp_netmask ;   2192    struct vki_sockaddr arp_netmask ;
2193    char arp_dev[16] ;   2193    char arp_dev[16] ;
2194 };   2194 };
2195 struct vki_rtentry {   2195 struct vki_rtentry {
2196    unsigned long rt_pad1 ;   2196    unsigned long rt_pad1 ;
2197    struct vki_sockaddr rt_dst ;   2197    struct vki_sockaddr rt_dst ;
2198    struct vki_sockaddr rt_gateway ;   2198    struct vki_sockaddr rt_gateway ;
2199    struct vki_sockaddr rt_genmask ;   2199    struct vki_sockaddr rt_genmask ;
2200    unsigned short rt_flags ;   2200    unsigned short rt_flags ;
2201    short rt_pad2 ;   2201    short rt_pad2 ;
2202    unsigned long rt_pad3 ;   2202    unsigned long rt_pad3 ;
2203    void *rt_pad4 ;   2203    void *rt_pad4 ;
2204    short rt_metric ;   2204    short rt_metric ;
2205    char *rt_dev ;   2205    char *rt_dev ;
2206    unsigned long rt_mtu ;   2206    unsigned long rt_mtu ;
2207    unsigned long rt_window ;   2207    unsigned long rt_window ;
2208    unsigned short rt_irtt ;   2208    unsigned short rt_irtt ;
2209 };   2209 };
2210 typedef __vki_s32 vki_sctp_assoc_t;   2210 typedef __vki_s32 vki_sctp_assoc_t;
2211 enum vki_sctp_optname {   2211 enum vki_sctp_optname {
2212     VKI_SCTP_RTOINFO = 0,   2212     VKI_SCTP_RTOINFO = 0,
2213     VKI_SCTP_ASSOCINFO = 1,   2213     VKI_SCTP_ASSOCINFO = 1,
2214     VKI_SCTP_INITMSG = 2,   2214     VKI_SCTP_INITMSG = 2,
2215     VKI_SCTP_NODELAY = 3,   2215     VKI_SCTP_NODELAY = 3,
2216     VKI_SCTP_AUTOCLOSE = 4,   2216     VKI_SCTP_AUTOCLOSE = 4,
2217     VKI_SCTP_SET_PEER_PRIMARY_ADDR = 5,   2217     VKI_SCTP_SET_PEER_PRIMARY_ADDR = 5,
2218     VKI_SCTP_PRIMARY_ADDR = 6,   2218     VKI_SCTP_PRIMARY_ADDR = 6,
2219     VKI_SCTP_ADAPTION_LAYER = 7,   2219     VKI_SCTP_ADAPTION_LAYER = 7,
2220     VKI_SCTP_DISABLE_FRAGMENTS = 8,   2220     VKI_SCTP_DISABLE_FRAGMENTS = 8,
2221     VKI_SCTP_PEER_ADDR_PARAMS = 9,   2221     VKI_SCTP_PEER_ADDR_PARAMS = 9,
2222     VKI_SCTP_DEFAULT_SEND_PARAM = 10,   2222     VKI_SCTP_DEFAULT_SEND_PARAM = 10,
2223     VKI_SCTP_EVENTS = 11,   2223     VKI_SCTP_EVENTS = 11,
2224     VKI_SCTP_I_WANT_MAPPED_V4_ADDR = 12,   2224     VKI_SCTP_I_WANT_MAPPED_V4_ADDR = 12,
2225     VKI_SCTP_MAXSEG = 13,   2225     VKI_SCTP_MAXSEG = 13,
2226     VKI_SCTP_STATUS = 14,   2226     VKI_SCTP_STATUS = 14,
2227     VKI_SCTP_GET_PEER_ADDR_INFO = 15,   2227     VKI_SCTP_GET_PEER_ADDR_INFO = 15,
2228     VKI_SCTP_SOCKOPT_BINDX_ADD = 100,   2228     VKI_SCTP_SOCKOPT_BINDX_ADD = 100,
2229     VKI_SCTP_SOCKOPT_BINDX_REM = 101,   2229     VKI_SCTP_SOCKOPT_BINDX_REM = 101,
2230     VKI_SCTP_SOCKOPT_PEELOFF = 102,   2230     VKI_SCTP_SOCKOPT_PEELOFF = 102,
2231     VKI_SCTP_GET_PEER_ADDRS_NUM = 103,   2231     VKI_SCTP_GET_PEER_ADDRS_NUM = 103,
2232     VKI_SCTP_GET_PEER_ADDRS = 104,   2232     VKI_SCTP_GET_PEER_ADDRS = 104,
2233     VKI_SCTP_GET_LOCAL_ADDRS_NUM = 105,   2233     VKI_SCTP_GET_LOCAL_ADDRS_NUM = 105,
2234     VKI_SCTP_GET_LOCAL_ADDRS = 106,   2234     VKI_SCTP_GET_LOCAL_ADDRS = 106,
2235     VKI_SCTP_SOCKOPT_CONNECTX = 107   2235     VKI_SCTP_SOCKOPT_CONNECTX = 107
2236 } ;   2236 } ;
2237 struct vki_sctp_getaddrs {   2237 struct vki_sctp_getaddrs {
2238    vki_sctp_assoc_t assoc_id ;   2238    vki_sctp_assoc_t assoc_id ;
2239    int addr_num ;   2239    int addr_num ;
2240    struct vki_sockaddr *addrs ;   2240    struct vki_sockaddr *addrs ;
2241 };   2241 };
2242 struct vki_rusage {   2242 struct vki_rusage {
2243    struct vki_timeval ru_utime ;   2243    struct vki_timeval ru_utime ;
2244    struct vki_timeval ru_stime ;   2244    struct vki_timeval ru_stime ;
2245    long ru_maxrss ;   2245    long ru_maxrss ;
2246    long ru_ixrss ;   2246    long ru_ixrss ;
2247    long ru_idrss ;   2247    long ru_idrss ;
2248    long ru_isrss ;   2248    long ru_isrss ;
2249    long ru_minflt ;   2249    long ru_minflt ;
2250    long ru_majflt ;   2250    long ru_majflt ;
2251    long ru_nswap ;   2251    long ru_nswap ;
2252    long ru_inblock ;   2252    long ru_inblock ;
2253    long ru_oublock ;   2253    long ru_oublock ;
2254    long ru_msgsnd ;   2254    long ru_msgsnd ;
2255    long ru_msgrcv ;   2255    long ru_msgrcv ;
2256    long ru_nsignals ;   2256    long ru_nsignals ;
2257    long ru_nvcsw ;   2257    long ru_nvcsw ;
2258    long ru_nivcsw ;   2258    long ru_nivcsw ;
2259 };   2259 };
2260 struct vki_rlimit {   2260 struct vki_rlimit {
2261    unsigned long rlim_cur ;   2261    unsigned long rlim_cur ;
2262    unsigned long rlim_max ;   2262    unsigned long rlim_max ;
2263 };   2263 };
2264 struct vki_rlimit64 {   2264 struct vki_rlimit64 {
2265    __vki_u64 rlim_cur ;   2265    __vki_u64 rlim_cur ;
2266    __vki_u64 rlim_max ;   2266    __vki_u64 rlim_max ;
2267 };   2267 };
2268 struct vki_elf_siginfo {   2268 struct vki_elf_siginfo {
2269    int si_signo ;   2269    int si_signo ;
2270    int si_code ;   2270    int si_code ;
2271    int si_errno ;   2271    int si_errno ;
2272 };   2272 };
2273 struct vki_elf_prstatus {   2273 struct vki_elf_prstatus {
2274    struct vki_elf_siginfo pr_info ;   2274    struct vki_elf_siginfo pr_info ;
2275    short pr_cursig ;   2275    short pr_cursig ;
2276    unsigned long pr_sigpend ;   2276    unsigned long pr_sigpend ;
2277    unsigned long pr_sighold ;   2277    unsigned long pr_sighold ;
2278    vki_pid_t pr_pid ;   2278    vki_pid_t pr_pid ;
2279    vki_pid_t pr_ppid ;   2279    vki_pid_t pr_ppid ;
2280    vki_pid_t pr_pgrp ;   2280    vki_pid_t pr_pgrp ;
2281    vki_pid_t pr_sid ;   2281    vki_pid_t pr_sid ;
2282    struct vki_timeval pr_utime ;   2282    struct vki_timeval pr_utime ;
2283    struct vki_timeval pr_stime ;   2283    struct vki_timeval pr_stime ;
2284    struct vki_timeval pr_cutime ;   2284    struct vki_timeval pr_cutime ;
2285    struct vki_timeval pr_cstime ;   2285    struct vki_timeval pr_cstime ;
2286    vki_elf_gregset_t pr_reg ;   2286    vki_elf_gregset_t pr_reg ;
2287    int pr_fpvalid ;   2287    int pr_fpvalid ;
2288 };   2288 };
2289 struct vki_elf_prpsinfo {   2289 struct vki_elf_prpsinfo {
2290    char pr_state ;   2290    char pr_state ;
2291    char pr_sname ;   2291    char pr_sname ;
2292    char pr_zomb ;   2292    char pr_zomb ;
2293    char pr_nice ;   2293    char pr_nice ;
2294    unsigned long pr_flag ;   2294    unsigned long pr_flag ;
2295    __vki_kernel_uid_t pr_uid ;   2295    __vki_kernel_uid_t pr_uid ;
2296    __vki_kernel_gid_t pr_gid ;   2296    __vki_kernel_gid_t pr_gid ;
2297    vki_pid_t pr_pid ;   2297    vki_pid_t pr_pid ;
2298    vki_pid_t pr_ppid ;   2298    vki_pid_t pr_ppid ;
2299    vki_pid_t pr_pgrp ;   2299    vki_pid_t pr_pgrp ;
2300    vki_pid_t pr_sid ;   2300    vki_pid_t pr_sid ;
2301    char pr_fname[16] ;   2301    char pr_fname[16] ;
2302    char pr_psargs[80] ;   2302    char pr_psargs[80] ;
2303 };   2303 };
2304 struct vki_epoll_event {   2304 struct vki_epoll_event {
2305    __vki_u32 events ;   2305    __vki_u32 events ;
2306    __vki_u64 data ;   2306    __vki_u64 data ;
2307 };   2307 };
2308 struct vki_mq_attr {   2308 struct vki_mq_attr {
2309    long mq_flags ;   2309    long mq_flags ;
2310    long mq_maxmsg ;   2310    long mq_maxmsg ;
2311    long mq_msgsize ;   2311    long mq_msgsize ;
2312    long mq_curmsgs ;   2312    long mq_curmsgs ;
2313    long __reserved[4] ;   2313    long __reserved[4] ;
2314 };   2314 };
2315 struct vki_new_utsname {   2315 struct vki_new_utsname {
2316    char sysname[65] ;   2316    char sysname[65] ;
2317    char nodename[65] ;   2317    char nodename[65] ;
2318    char release[65] ;   2318    char release[65] ;
2319    char version[65] ;   2319    char version[65] ;
2320    char machine[65] ;   2320    char machine[65] ;
2321    char domainname[65] ;   2321    char domainname[65] ;
2322 };   2322 };
2323 struct vki_mii_ioctl_data {   2323 struct vki_mii_ioctl_data {
2324    vki_u16 phy_id ;   2324    vki_u16 phy_id ;
2325    vki_u16 reg_num ;   2325    vki_u16 reg_num ;
2326    vki_u16 val_in ;   2326    vki_u16 val_in ;
2327    vki_u16 val_out ;   2327    vki_u16 val_out ;
2328 };   2328 };
2329 struct __vki_user_cap_header_struct {   2329 struct __vki_user_cap_header_struct {
2330    __vki_u32 version ;   2330    __vki_u32 version ;
2331    int pid ;   2331    int pid ;
2332 };   2332 };
2333 typedef struct __vki_user_cap_header_struct *vki_cap_user_header_t;   2333 typedef struct __vki_user_cap_header_struct *vki_cap_user_header_t;
2334 struct __vki_user_cap_data_struct {   2334 struct __vki_user_cap_data_struct {
2335    __vki_u32 effective ;   2335    __vki_u32 effective ;
2336    __vki_u32 permitted ;   2336    __vki_u32 permitted ;
2337    __vki_u32 inheritable ;   2337    __vki_u32 inheritable ;
2338 };   2338 };
2339 typedef struct __vki_user_cap_data_struct *vki_cap_user_data_t;   2339 typedef struct __vki_user_cap_data_struct *vki_cap_user_data_t;
2340 struct vki_ipc_perm {   2340 struct vki_ipc_perm {
2341    __vki_kernel_key_t key ;   2341    __vki_kernel_key_t key ;
2342    __vki_kernel_uid_t uid ;   2342    __vki_kernel_uid_t uid ;
2343    __vki_kernel_gid_t gid ;   2343    __vki_kernel_gid_t gid ;
2344    __vki_kernel_uid_t cuid ;   2344    __vki_kernel_uid_t cuid ;
2345    __vki_kernel_gid_t cgid ;   2345    __vki_kernel_gid_t cgid ;
2346    __vki_kernel_mode_t mode ;   2346    __vki_kernel_mode_t mode ;
2347    unsigned short seq ;   2347    unsigned short seq ;
2348 };   2348 };
2349 struct vki_semid_ds {   2349 struct vki_semid_ds {
2350    struct vki_ipc_perm sem_perm ;   2350    struct vki_ipc_perm sem_perm ;
2351    __vki_kernel_time_t sem_otime ;   2351    __vki_kernel_time_t sem_otime ;
2352    __vki_kernel_time_t sem_ctime ;   2352    __vki_kernel_time_t sem_ctime ;
2353    void *sem_base ;   2353    void *sem_base ;
2354    void *sem_pending ;   2354    void *sem_pending ;
2355    void **sem_pending_last ;   2355    void **sem_pending_last ;
2356    void *undo ;   2356    void *undo ;
2357    unsigned short sem_nsems ;   2357    unsigned short sem_nsems ;
2358 };   2358 };
2359 struct vki_sembuf {   2359 struct vki_sembuf {
2360    unsigned short sem_num ;   2360    unsigned short sem_num ;
2361    short sem_op ;   2361    short sem_op ;
2362    short sem_flg ;   2362    short sem_flg ;
2363 };   2363 };
2364 struct vki_seminfo;   2364 struct vki_seminfo;
2365 union vki_semun {   2365 union vki_semun {
2366    int val ;   2366    int val ;
2367    struct vki_semid_ds *buf ;   2367    struct vki_semid_ds *buf ;
2368    unsigned short *array ;   2368    unsigned short *array ;
2369    struct vki_seminfo *__buf ;   2369    struct vki_seminfo *__buf ;
2370    void *__pad ;   2370    void *__pad ;
2371 };   2371 };
2372 struct vki_seminfo {   2372 struct vki_seminfo {
2373    int semmap ;   2373    int semmap ;
2374    int semmni ;   2374    int semmni ;
2375    int semmns ;   2375    int semmns ;
2376    int semmnu ;   2376    int semmnu ;
2377    int semmsl ;   2377    int semmsl ;
2378    int semopm ;   2378    int semopm ;
2379    int semume ;   2379    int semume ;
2380    int semusz ;   2380    int semusz ;
2381    int semvmx ;   2381    int semvmx ;
2382    int semaem ;   2382    int semaem ;
2383 };   2383 };
2384 struct vki_robust_list {   2384 struct vki_robust_list {
2385    struct vki_robust_list *next ;   2385    struct vki_robust_list *next ;
2386 };   2386 };
2387 struct vki_robust_list_head {   2387 struct vki_robust_list_head {
2388    struct vki_robust_list list ;   2388    struct vki_robust_list list ;
2389    long futex_offset ;   2389    long futex_offset ;
2390    struct vki_robust_list *list_op_pending ;   2390    struct vki_robust_list *list_op_pending ;
2391 };   2391 };
2392 struct vki_dirent {   2392 struct vki_dirent {
2393    long d_ino ;   2393    long d_ino ;
2394    __vki_kernel_off_t d_off ;   2394    __vki_kernel_off_t d_off ;
2395    unsigned short d_reclen ;   2395    unsigned short d_reclen ;
2396    char d_name[256] ;   2396    char d_name[256] ;
2397 };   2397 };
2398 struct __vki_sysctl_args {   2398 struct __vki_sysctl_args {
2399    int *name ;   2399    int *name ;
2400    int nlen ;   2400    int nlen ;
2401    void *oldval ;   2401    void *oldval ;
2402    vki_size_t *oldlenp ;   2402    vki_size_t *oldlenp ;
2403    void *newval ;   2403    void *newval ;
2404    vki_size_t newlen ;   2404    vki_size_t newlen ;
2405    unsigned long __unused[4] ;   2405    unsigned long __unused[4] ;
2406 };   2406 };
2407 typedef unsigned long vki_aio_context_t;   2407 typedef unsigned long vki_aio_context_t;
2408 enum __anonenum_94 {   2408 enum __anonenum_94 {
2409     VKI_IOCB_CMD_PREAD = 0,   2409     VKI_IOCB_CMD_PREAD = 0,
2410     VKI_IOCB_CMD_PWRITE = 1,   2410     VKI_IOCB_CMD_PWRITE = 1,
2411     VKI_IOCB_CMD_FSYNC = 2,   2411     VKI_IOCB_CMD_FSYNC = 2,
2412     VKI_IOCB_CMD_FDSYNC = 3,   2412     VKI_IOCB_CMD_FDSYNC = 3,
2413     VKI_IOCB_CMD_PREADV = 7,   2413     VKI_IOCB_CMD_PREADV = 7,
2414     VKI_IOCB_CMD_PWRITEV = 8   2414     VKI_IOCB_CMD_PWRITEV = 8
2415 } ;   2415 } ;
2416 struct vki_io_event {   2416 struct vki_io_event {
2417    __vki_u64 data ;   2417    __vki_u64 data ;
2418    __vki_u64 obj ;   2418    __vki_u64 obj ;
2419    __vki_s64 result ;   2419    __vki_s64 result ;
2420    __vki_s64 result2 ;   2420    __vki_s64 result2 ;
2421 };   2421 };
2422 struct vki_iocb {   2422 struct vki_iocb {
2423    __vki_u64 aio_data ;   2423    __vki_u64 aio_data ;
2424    __vki_u32 aio_key ;   2424    __vki_u32 aio_key ;
2425    __vki_u32 aio_reserved1 ;   2425    __vki_u32 aio_reserved1 ;
2426    __vki_u16 aio_lio_opcode ;   2426    __vki_u16 aio_lio_opcode ;
2427    __vki_s16 aio_reqprio ;   2427    __vki_s16 aio_reqprio ;
2428    __vki_u32 aio_fildes ;   2428    __vki_u32 aio_fildes ;
2429    __vki_u64 aio_buf ;   2429    __vki_u64 aio_buf ;
2430    __vki_u64 aio_nbytes ;   2430    __vki_u64 aio_nbytes ;
2431    __vki_s64 aio_offset ;   2431    __vki_s64 aio_offset ;
2432    __vki_u64 aio_reserved2 ;   2432    __vki_u64 aio_reserved2 ;
2433    __vki_u64 aio_reserved3 ;   2433    __vki_u64 aio_reserved3 ;
2434 };   2434 };
2435 struct vki_aio_ring {   2435 struct vki_aio_ring {
2436    unsigned int id ;   2436    unsigned int id ;
2437    unsigned int nr ;   2437    unsigned int nr ;
2438    unsigned int head ;   2438    unsigned int head ;
2439    unsigned int tail ;   2439    unsigned int tail ;
2440    unsigned int magic ;   2440    unsigned int magic ;
2441    unsigned int compat_features ;   2441    unsigned int compat_features ;
2442    unsigned int incompat_features ;   2442    unsigned int incompat_features ;
2443    unsigned int header_length ;   2443    unsigned int header_length ;
2444    struct vki_io_event io_events[0] ;   2444    struct vki_io_event io_events[0] ;
2445 };   2445 };
2446 struct vki_msg;   2446 struct vki_msg;
2447 struct vki_msqid_ds {   2447 struct vki_msqid_ds {
2448    struct vki_ipc_perm msg_perm ;   2448    struct vki_ipc_perm msg_perm ;
2449    struct vki_msg *msg_first ;   2449    struct vki_msg *msg_first ;
2450    struct vki_msg *msg_last ;   2450    struct vki_msg *msg_last ;
2451    __vki_kernel_time_t msg_stime ;   2451    __vki_kernel_time_t msg_stime ;
2452    __vki_kernel_time_t msg_rtime ;   2452    __vki_kernel_time_t msg_rtime ;
2453    __vki_kernel_time_t msg_ctime ;   2453    __vki_kernel_time_t msg_ctime ;
2454    unsigned long msg_lcbytes ;   2454    unsigned long msg_lcbytes ;
2455    unsigned long msg_lqbytes ;   2455    unsigned long msg_lqbytes ;
2456    unsigned short msg_cbytes ;   2456    unsigned short msg_cbytes ;
2457    unsigned short msg_qnum ;   2457    unsigned short msg_qnum ;
2458    unsigned short msg_qbytes ;   2458    unsigned short msg_qbytes ;
2459    __vki_kernel_ipc_pid_t msg_lspid ;   2459    __vki_kernel_ipc_pid_t msg_lspid ;
2460    __vki_kernel_ipc_pid_t msg_lrpid ;   2460    __vki_kernel_ipc_pid_t msg_lrpid ;
2461 };   2461 };
2462 struct vki_msgbuf {   2462 struct vki_msgbuf {
2463    long mtype ;   2463    long mtype ;
2464    char mtext[1] ;   2464    char mtext[1] ;
2465 };   2465 };
2466 struct vki_msginfo {   2466 struct vki_msginfo {
2467    int msgpool ;   2467    int msgpool ;
2468    int msgmap ;   2468    int msgmap ;
2469    int msgmax ;   2469    int msgmax ;
2470    int msgmnb ;   2470    int msgmnb ;
2471    int msgmni ;   2471    int msgmni ;
2472    int msgssz ;   2472    int msgssz ;
2473    int msgtql ;   2473    int msgtql ;
2474    unsigned short msgseg ;   2474    unsigned short msgseg ;
2475 };   2475 };
2476 struct vki_shmid_ds {   2476 struct vki_shmid_ds {
2477    struct vki_ipc_perm shm_perm ;   2477    struct vki_ipc_perm shm_perm ;
2478    int shm_segsz ;   2478    int shm_segsz ;
2479    __vki_kernel_time_t shm_atime ;   2479    __vki_kernel_time_t shm_atime ;
2480    __vki_kernel_time_t shm_dtime ;   2480    __vki_kernel_time_t shm_dtime ;
2481    __vki_kernel_time_t shm_ctime ;   2481    __vki_kernel_time_t shm_ctime ;
2482    __vki_kernel_ipc_pid_t shm_cpid ;   2482    __vki_kernel_ipc_pid_t shm_cpid ;
2483    __vki_kernel_ipc_pid_t shm_lpid ;   2483    __vki_kernel_ipc_pid_t shm_lpid ;
2484    unsigned short shm_nattch ;   2484    unsigned short shm_nattch ;
2485    unsigned short shm_unused ;   2485    unsigned short shm_unused ;
2486    void *shm_unused2 ;   2486    void *shm_unused2 ;
2487    void *shm_unused3 ;   2487    void *shm_unused3 ;
2488 };   2488 };
2489 struct vki_shminfo {   2489 struct vki_shminfo {
2490    int shmmax ;   2490    int shmmax ;
2491    int shmmin ;   2491    int shmmin ;
2492    int shmmni ;   2492    int shmmni ;
2493    int shmseg ;   2493    int shmseg ;
2494    int shmall ;   2494    int shmall ;
2495 };   2495 };
2496 struct vki_shm_info {   2496 struct vki_shm_info {
2497    int used_ids ;   2497    int used_ids ;
2498    unsigned long shm_tot ;   2498    unsigned long shm_tot ;
2499    unsigned long shm_rss ;   2499    unsigned long shm_rss ;
2500    unsigned long shm_swp ;   2500    unsigned long shm_swp ;
2501    unsigned long swap_attempts ;   2501    unsigned long swap_attempts ;
2502    unsigned long swap_successes ;   2502    unsigned long swap_successes ;
2503 };   2503 };
2504 struct vki_rtc_time {   2504 struct vki_rtc_time {
2505    int tm_sec ;   2505    int tm_sec ;
2506    int tm_min ;   2506    int tm_min ;
2507    int tm_hour ;   2507    int tm_hour ;
2508    int tm_mday ;   2508    int tm_mday ;
2509    int tm_mon ;   2509    int tm_mon ;
2510    int tm_year ;   2510    int tm_year ;
2511    int tm_wday ;   2511    int tm_wday ;
2512    int tm_yday ;   2512    int tm_yday ;
2513    int tm_isdst ;   2513    int tm_isdst ;
2514 };   2514 };
2515 struct __anonstruct_vki_isdn_net_ioctl_phone_95 {   2515 struct __anonstruct_vki_isdn_net_ioctl_phone_95 {
2516    char name[10] ;   2516    char name[10] ;
2517    char phone[32] ;   2517    char phone[32] ;
2518    int outgoing ;   2518    int outgoing ;
2519 };   2519 };
2520 typedef struct __anonstruct_vki_isdn_net_ioctl_phone_95 vki_isdn_net_ioctl_phone;   2520 typedef struct __anonstruct_vki_isdn_net_ioctl_phone_95 vki_isdn_net_ioctl_phone;
2521 struct vki_ppdev_frob_struct {   2521 struct vki_ppdev_frob_struct {
2522    unsigned char mask ;   2522    unsigned char mask ;
2523    unsigned char val ;   2523    unsigned char val ;
2524 };   2524 };
2525 struct vki_sg_io_hdr {   2525 struct vki_sg_io_hdr {
2526    int interface_id ;   2526    int interface_id ;
2527    int dxfer_direction ;   2527    int dxfer_direction ;
2528    unsigned char cmd_len ;   2528    unsigned char cmd_len ;
2529    unsigned char mx_sb_len ;   2529    unsigned char mx_sb_len ;
2530    unsigned short iovec_count ;   2530    unsigned short iovec_count ;
2531    unsigned int dxfer_len ;   2531    unsigned int dxfer_len ;
2532    void *dxferp ;   2532    void *dxferp ;
2533    unsigned char *cmdp ;   2533    unsigned char *cmdp ;
2534    void *sbp ;   2534    void *sbp ;
2535    unsigned int timeout ;   2535    unsigned int timeout ;
2536    unsigned int flags ;   2536    unsigned int flags ;
2537    int pack_id ;   2537    int pack_id ;
2538    void *usr_ptr ;   2538    void *usr_ptr ;
2539    unsigned char status ;   2539    unsigned char status ;
2540    unsigned char masked_status ;   2540    unsigned char masked_status ;
2541    unsigned char msg_status ;   2541    unsigned char msg_status ;
2542    unsigned char sb_len_wr ;   2542    unsigned char sb_len_wr ;
2543    unsigned short host_status ;   2543    unsigned short host_status ;
2544    unsigned short driver_status ;   2544    unsigned short driver_status ;
2545    int resid ;   2545    int resid ;
2546    unsigned int duration ;   2546    unsigned int duration ;
2547    unsigned int info ;   2547    unsigned int info ;
2548 };   2548 };
2549 typedef struct vki_sg_io_hdr vki_sg_io_hdr_t;   2549 typedef struct vki_sg_io_hdr vki_sg_io_hdr_t;
2550 struct vki_sg_scsi_id {   2550 struct vki_sg_scsi_id {
2551    int host_no ;   2551    int host_no ;
2552    int channel ;   2552    int channel ;
2553    int scsi_id ;   2553    int scsi_id ;
2554    int lun ;   2554    int lun ;
2555    int scsi_type ;   2555    int scsi_type ;
2556    short h_cmd_per_lun ;   2556    short h_cmd_per_lun ;
2557    short d_queue_depth ;   2557    short d_queue_depth ;
2558    int unused[2] ;   2558    int unused[2] ;
2559 };   2559 };
2560 typedef struct vki_sg_scsi_id vki_sg_scsi_id_t;   2560 typedef struct vki_sg_scsi_id vki_sg_scsi_id_t;
2561 struct vki_scsi_idlun {   2561 struct vki_scsi_idlun {
2562    __vki_u32 dev_id ;   2562    __vki_u32 dev_id ;
2563    __vki_u32 host_unique_id ;   2563    __vki_u32 host_unique_id ;
2564 };   2564 };
2565 struct vki_cdrom_msf0 {   2565 struct vki_cdrom_msf0 {
2566    __vki_u8 minute ;   2566    __vki_u8 minute ;
2567    __vki_u8 second ;   2567    __vki_u8 second ;
2568    __vki_u8 frame ;   2568    __vki_u8 frame ;
2569 };   2569 };
2570 union vki_cdrom_addr {   2570 union vki_cdrom_addr {
2571    struct vki_cdrom_msf0 msf ;   2571    struct vki_cdrom_msf0 msf ;
2572    int lba ;   2572    int lba ;
2573 };   2573 };
2574 struct vki_cdrom_msf {   2574 struct vki_cdrom_msf {
2575    __vki_u8 cdmsf_min0 ;   2575    __vki_u8 cdmsf_min0 ;
2576    __vki_u8 cdmsf_sec0 ;   2576    __vki_u8 cdmsf_sec0 ;
2577    __vki_u8 cdmsf_frame0 ;   2577    __vki_u8 cdmsf_frame0 ;
2578    __vki_u8 cdmsf_min1 ;   2578    __vki_u8 cdmsf_min1 ;
2579    __vki_u8 cdmsf_sec1 ;   2579    __vki_u8 cdmsf_sec1 ;
2580    __vki_u8 cdmsf_frame1 ;   2580    __vki_u8 cdmsf_frame1 ;
2581 };   2581 };
2582 struct vki_cdrom_tochdr {   2582 struct vki_cdrom_tochdr {
2583    __vki_u8 cdth_trk0 ;   2583    __vki_u8 cdth_trk0 ;
2584    __vki_u8 cdth_trk1 ;   2584    __vki_u8 cdth_trk1 ;
2585 };   2585 };
2586 struct vki_cdrom_volctrl {   2586 struct vki_cdrom_volctrl {
2587    __vki_u8 channel0 ;   2587    __vki_u8 channel0 ;
2588    __vki_u8 channel1 ;   2588    __vki_u8 channel1 ;
2589    __vki_u8 channel2 ;   2589    __vki_u8 channel2 ;
2590    __vki_u8 channel3 ;   2590    __vki_u8 channel3 ;
2591 };   2591 };
2592 struct vki_cdrom_subchnl {   2592 struct vki_cdrom_subchnl {
2593    __vki_u8 cdsc_format ;   2593    __vki_u8 cdsc_format ;
2594    __vki_u8 cdsc_audiostatus ;   2594    __vki_u8 cdsc_audiostatus ;
2595    __vki_u8 cdsc_adr : 4 ;   2595    __vki_u8 cdsc_adr : 4 ;
2596    __vki_u8 cdsc_ctrl : 4 ;   2596    __vki_u8 cdsc_ctrl : 4 ;
2597    __vki_u8 cdsc_trk ;   2597    __vki_u8 cdsc_trk ;
2598    __vki_u8 cdsc_ind ;   2598    __vki_u8 cdsc_ind ;
2599    union vki_cdrom_addr cdsc_absaddr ;   2599    union vki_cdrom_addr cdsc_absaddr ;
2600    union vki_cdrom_addr cdsc_reladdr ;   2600    union vki_cdrom_addr cdsc_reladdr ;
2601 };   2601 };
2602 struct vki_cdrom_tocentry {   2602 struct vki_cdrom_tocentry {
2603    __vki_u8 cdte_track ;   2603    __vki_u8 cdte_track ;
2604    __vki_u8 cdte_adr : 4 ;   2604    __vki_u8 cdte_adr : 4 ;
2605    __vki_u8 cdte_ctrl : 4 ;   2605    __vki_u8 cdte_ctrl : 4 ;
2606    __vki_u8 cdte_format ;   2606    __vki_u8 cdte_format ;
2607    union vki_cdrom_addr cdte_addr ;   2607    union vki_cdrom_addr cdte_addr ;
2608    __vki_u8 cdte_datamode ;   2608    __vki_u8 cdte_datamode ;
2609 };   2609 };
2610 struct vki_cdrom_read {   2610 struct vki_cdrom_read {
2611    int cdread_lba ;   2611    int cdread_lba ;
2612    char *cdread_bufaddr ;   2612    char *cdread_bufaddr ;
2613    int cdread_buflen ;   2613    int cdread_buflen ;
2614 };   2614 };
2615 struct vki_cdrom_read_audio {   2615 struct vki_cdrom_read_audio {
2616    union vki_cdrom_addr addr ;   2616    union vki_cdrom_addr addr ;
2617    __vki_u8 addr_format ;   2617    __vki_u8 addr_format ;
2618    int nframes ;   2618    int nframes ;
2619    __vki_u8 *buf ;   2619    __vki_u8 *buf ;
2620 };   2620 };
2621 struct vki_cdrom_multisession {   2621 struct vki_cdrom_multisession {
2622    union vki_cdrom_addr addr ;   2622    union vki_cdrom_addr addr ;
2623    __vki_u8 xa_flag ;   2623    __vki_u8 xa_flag ;
2624    __vki_u8 addr_format ;   2624    __vki_u8 addr_format ;
2625 };   2625 };
2626 struct vki_cdrom_mcn {   2626 struct vki_cdrom_mcn {
2627    __vki_u8 medium_catalog_number[14] ;   2627    __vki_u8 medium_catalog_number[14] ;
2628 };   2628 };
2629 struct vki_cdrom_generic_command {   2629 struct vki_cdrom_generic_command {
2630    unsigned char cmd[12] ;   2630    unsigned char cmd[12] ;
2631    unsigned char *buffer ;   2631    unsigned char *buffer ;
2632    unsigned int buflen ;   2632    unsigned int buflen ;
2633    int stat ;   2633    int stat ;
2634    void *sense ;   2634    void *sense ;
2635    unsigned char data_direction ;   2635    unsigned char data_direction ;
2636    int quiet ;   2636    int quiet ;
2637    int timeout ;   2637    int timeout ;
2638    void *reserved[1] ;   2638    void *reserved[1] ;
2639 };   2639 };
2640 struct vki_audio_buf_info {   2640 struct vki_audio_buf_info {
2641    int fragments ;   2641    int fragments ;
2642    int fragstotal ;   2642    int fragstotal ;
2643    int fragsize ;   2643    int fragsize ;
2644    int bytes ;   2644    int bytes ;
2645 };   2645 };
2646 typedef struct vki_audio_buf_info vki_audio_buf_info;   2646 typedef struct vki_audio_buf_info vki_audio_buf_info;
2647 struct vki_hd_geometry {   2647 struct vki_hd_geometry {
2648    unsigned char heads ;   2648    unsigned char heads ;
2649    unsigned char sectors ;   2649    unsigned char sectors ;
2650    unsigned short cylinders ;   2650    unsigned short cylinders ;
2651    unsigned long start ;   2651    unsigned long start ;
2652 };   2652 };
2653 struct vki_fb_fix_screeninfo {   2653 struct vki_fb_fix_screeninfo {
2654    char id[16] ;   2654    char id[16] ;
2655    unsigned long smem_start ;   2655    unsigned long smem_start ;
2656    __vki_u32 smem_len ;   2656    __vki_u32 smem_len ;
2657    __vki_u32 type ;   2657    __vki_u32 type ;
2658    __vki_u32 type_aux ;   2658    __vki_u32 type_aux ;
2659    __vki_u32 visual ;   2659    __vki_u32 visual ;
2660    __vki_u16 xpanstep ;   2660    __vki_u16 xpanstep ;
2661    __vki_u16 ypanstep ;   2661    __vki_u16 ypanstep ;
2662    __vki_u16 ywrapstep ;   2662    __vki_u16 ywrapstep ;
2663    __vki_u32 line_length ;   2663    __vki_u32 line_length ;
2664    unsigned long mmio_start ;   2664    unsigned long mmio_start ;
2665    __vki_u32 mmio_len ;   2665    __vki_u32 mmio_len ;
2666    __vki_u32 accel ;   2666    __vki_u32 accel ;
2667    __vki_u16 reserved[3] ;   2667    __vki_u16 reserved[3] ;
2668 };   2668 };
2669 struct vki_fb_bitfield {   2669 struct vki_fb_bitfield {
2670    __vki_u32 offset ;   2670    __vki_u32 offset ;
2671    __vki_u32 length ;   2671    __vki_u32 length ;
2672    __vki_u32 msb_right ;   2672    __vki_u32 msb_right ;
2673 };   2673 };
2674 struct vki_fb_var_screeninfo {   2674 struct vki_fb_var_screeninfo {
2675    __vki_u32 xres ;   2675    __vki_u32 xres ;
2676    __vki_u32 yres ;   2676    __vki_u32 yres ;
2677    __vki_u32 xres_virtual ;   2677    __vki_u32 xres_virtual ;
2678    __vki_u32 yres_virtual ;   2678    __vki_u32 yres_virtual ;
2679    __vki_u32 xoffset ;   2679    __vki_u32 xoffset ;
2680    __vki_u32 yoffset ;   2680    __vki_u32 yoffset ;
2681    __vki_u32 bits_per_pixel ;   2681    __vki_u32 bits_per_pixel ;
2682    __vki_u32 grayscale ;   2682    __vki_u32 grayscale ;
2683    struct vki_fb_bitfield red ;   2683    struct vki_fb_bitfield red ;
2684    struct vki_fb_bitfield green ;   2684    struct vki_fb_bitfield green ;
2685    struct vki_fb_bitfield blue ;   2685    struct vki_fb_bitfield blue ;
2686    struct vki_fb_bitfield transp ;   2686    struct vki_fb_bitfield transp ;
2687    __vki_u32 nonstd ;   2687    __vki_u32 nonstd ;
2688    __vki_u32 activate ;   2688    __vki_u32 activate ;
2689    __vki_u32 height ;   2689    __vki_u32 height ;
2690    __vki_u32 width ;   2690    __vki_u32 width ;
2691    __vki_u32 accel_flags ;   2691    __vki_u32 accel_flags ;
2692    __vki_u32 pixclock ;   2692    __vki_u32 pixclock ;
2693    __vki_u32 left_margin ;   2693    __vki_u32 left_margin ;
2694    __vki_u32 right_margin ;   2694    __vki_u32 right_margin ;
2695    __vki_u32 upper_margin ;   2695    __vki_u32 upper_margin ;
2696    __vki_u32 lower_margin ;   2696    __vki_u32 lower_margin ;
2697    __vki_u32 hsync_len ;   2697    __vki_u32 hsync_len ;
2698    __vki_u32 vsync_len ;   2698    __vki_u32 vsync_len ;
2699    __vki_u32 sync ;   2699    __vki_u32 sync ;
2700    __vki_u32 vmode ;   2700    __vki_u32 vmode ;
2701    __vki_u32 rotate ;   2701    __vki_u32 rotate ;
2702    __vki_u32 reserved[5] ;   2702    __vki_u32 reserved[5] ;
2703 };   2703 };
2704 struct vki_consolefontdesc {   2704 struct vki_consolefontdesc {
2705    unsigned short charcount ;   2705    unsigned short charcount ;
2706    unsigned short charheight ;   2706    unsigned short charheight ;
2707    char *chardata ;   2707    char *chardata ;
2708 };   2708 };
2709 struct vki_unipair {   2709 struct vki_unipair {
2710    unsigned short unicode ;   2710    unsigned short unicode ;
2711    unsigned short fontpos ;   2711    unsigned short fontpos ;
2712 };   2712 };
2713 struct vki_unimapdesc {   2713 struct vki_unimapdesc {
2714    unsigned short entry_ct ;   2714    unsigned short entry_ct ;
2715    struct vki_unipair *entries ;   2715    struct vki_unipair *entries ;
2716 };   2716 };
2717 struct vki_unimapinit {   2717 struct vki_unimapinit {
2718    unsigned short advised_hashsize ;   2718    unsigned short advised_hashsize ;
2719    unsigned short advised_hashstep ;   2719    unsigned short advised_hashstep ;
2720    unsigned short advised_hashlevel ;   2720    unsigned short advised_hashlevel ;
2721 };   2721 };
2722 struct vki_kbentry {   2722 struct vki_kbentry {
2723    unsigned char kb_table ;   2723    unsigned char kb_table ;
2724    unsigned char kb_index ;   2724    unsigned char kb_index ;
2725    unsigned short kb_value ;   2725    unsigned short kb_value ;
2726 };   2726 };
2727 struct vki_kbsentry {   2727 struct vki_kbsentry {
2728    unsigned char kb_func ;   2728    unsigned char kb_func ;
2729    unsigned char kb_string[512] ;   2729    unsigned char kb_string[512] ;
2730 };   2730 };
2731 struct vki_kbdiacr {   2731 struct vki_kbdiacr {
2732    unsigned char diacr ;   2732    unsigned char diacr ;
2733    unsigned char base ;   2733    unsigned char base ;
2734    unsigned char result ;   2734    unsigned char result ;
2735 };   2735 };
2736 struct vki_kbdiacrs {   2736 struct vki_kbdiacrs {
2737    unsigned int kb_cnt ;   2737    unsigned int kb_cnt ;
2738    struct vki_kbdiacr kbdiacr[256] ;   2738    struct vki_kbdiacr kbdiacr[256] ;
2739 };   2739 };
2740 struct vki_kbkeycode {   2740 struct vki_kbkeycode {
2741    unsigned int scancode ;   2741    unsigned int scancode ;
2742    unsigned int keycode ;   2742    unsigned int keycode ;
2743 };   2743 };
2744 struct vki_kbd_repeat {   2744 struct vki_kbd_repeat {
2745    int delay ;   2745    int delay ;
2746    int period ;   2746    int period ;
2747 };   2747 };
2748 struct vki_console_font_op {   2748 struct vki_console_font_op {
2749    unsigned int op ;   2749    unsigned int op ;
2750    unsigned int flags ;   2750    unsigned int flags ;
2751    unsigned int width ;   2751    unsigned int width ;
2752    unsigned int height ;   2752    unsigned int height ;
2753    unsigned int charcount ;   2753    unsigned int charcount ;
2754    unsigned char *data ;   2754    unsigned char *data ;
2755 };   2755 };
2756 typedef __vki_kernel_uid32_t vki_qid_t;   2756 typedef __vki_kernel_uid32_t vki_qid_t;
2757 struct __anonstruct_97 {   2757 struct __anonstruct_97 {
2758    int  : 0 ;   2758    int  : 0 ;
2759 };   2759 };
2760 struct __anonstruct_98 {   2760 struct __anonstruct_98 {
2761    int  : 0 ;   2761    int  : 0 ;
2762 };   2762 };
2763 enum __anonenum_96 {   2763 enum __anonenum_96 {
2764     VKI_SNDRV_PCM_IOCTL_HW_FREE = 16658,   2764     VKI_SNDRV_PCM_IOCTL_HW_FREE = 16658,
2765     VKI_SNDRV_PCM_IOCTL_HWSYNC = 16674,   2765     VKI_SNDRV_PCM_IOCTL_HWSYNC = 16674,
2766     VKI_SNDRV_PCM_IOCTL_PREPARE = 16704,   2766     VKI_SNDRV_PCM_IOCTL_PREPARE = 16704,
2767     VKI_SNDRV_PCM_IOCTL_RESET = 16705,   2767     VKI_SNDRV_PCM_IOCTL_RESET = 16705,
2768     VKI_SNDRV_PCM_IOCTL_START = 16706,   2768     VKI_SNDRV_PCM_IOCTL_START = 16706,
2769     VKI_SNDRV_PCM_IOCTL_DROP = 16707,   2769     VKI_SNDRV_PCM_IOCTL_DROP = 16707,
2770     VKI_SNDRV_PCM_IOCTL_DRAIN = 16708,   2770     VKI_SNDRV_PCM_IOCTL_DRAIN = 16708,
2771     VKI_SNDRV_PCM_IOCTL_PAUSE = 1074020677,   2771     VKI_SNDRV_PCM_IOCTL_PAUSE = 1074020677,
2772     VKI_SNDRV_PCM_IOCTL_RESUME = 16711,   2772     VKI_SNDRV_PCM_IOCTL_RESUME = 16711,
2773     VKI_SNDRV_PCM_IOCTL_XRUN = 16712,   2773     VKI_SNDRV_PCM_IOCTL_XRUN = 16712,
2774     VKI_SNDRV_PCM_IOCTL_LINK = 1074020704,   2774     VKI_SNDRV_PCM_IOCTL_LINK = 1074020704,
2775     VKI_SNDRV_PCM_IOCTL_UNLINK = 16737   2775     VKI_SNDRV_PCM_IOCTL_UNLINK = 16737
2776 } ;   2776 } ;
2777 enum __anonenum_99 {   2777 enum __anonenum_99 {
2778     VKI_SNDRV_TIMER_IOCTL_START = 21664,   2778     VKI_SNDRV_TIMER_IOCTL_START = 21664,
2779     VKI_SNDRV_TIMER_IOCTL_STOP = 21665,   2779     VKI_SNDRV_TIMER_IOCTL_STOP = 21665,
2780     VKI_SNDRV_TIMER_IOCTL_CONTINUE = 21666,   2780     VKI_SNDRV_TIMER_IOCTL_CONTINUE = 21666,
2781     VKI_SNDRV_TIMER_IOCTL_PAUSE = 21667   2781     VKI_SNDRV_TIMER_IOCTL_PAUSE = 21667
2782 } ;   2782 } ;
2783 struct vki_serial_icounter_struct {   2783 struct vki_serial_icounter_struct {
2784    int cts ;   2784    int cts ;
2785    int dsr ;   2785    int dsr ;
2786    int rng ;   2786    int rng ;
2787    int dcd ;   2787    int dcd ;
2788    int rx ;   2788    int rx ;
2789    int tx ;   2789    int tx ;
2790    int frame ;   2790    int frame ;
2791    int overrun ;   2791    int overrun ;
2792    int parity ;   2792    int parity ;
2793    int brk ;   2793    int brk ;
2794    int buf_overrun ;   2794    int buf_overrun ;
2795    int reserved[9] ;   2795    int reserved[9] ;
2796 };   2796 };
2797 struct vki_vt_mode {   2797 struct vki_vt_mode {
2798    char mode ;   2798    char mode ;
2799    char waitv ;   2799    char waitv ;
2800    short relsig ;   2800    short relsig ;
2801    short acqsig ;   2801    short acqsig ;
2802    short frsig ;   2802    short frsig ;
2803 };   2803 };
2804 struct vki_vt_stat {   2804 struct vki_vt_stat {
2805    unsigned short v_active ;   2805    unsigned short v_active ;
2806    unsigned short v_signal ;   2806    unsigned short v_signal ;
2807    unsigned short v_state ;   2807    unsigned short v_state ;
2808 };   2808 };
2809 struct vki_vt_sizes {   2809 struct vki_vt_sizes {
2810    unsigned short v_rows ;   2810    unsigned short v_rows ;
2811    unsigned short v_cols ;   2811    unsigned short v_cols ;
2812    unsigned short v_scrollsize ;   2812    unsigned short v_scrollsize ;
2813 };   2813 };
2814 struct vki_vt_consize {   2814 struct vki_vt_consize {
2815    unsigned short v_rows ;   2815    unsigned short v_rows ;
2816    unsigned short v_cols ;   2816    unsigned short v_cols ;
2817    unsigned short v_vlin ;   2817    unsigned short v_vlin ;
2818    unsigned short v_clin ;   2818    unsigned short v_clin ;
2819    unsigned short v_vcol ;   2819    unsigned short v_vcol ;
2820    unsigned short v_ccol ;   2820    unsigned short v_ccol ;
2821 };   2821 };
2822 struct vki_usbdevfs_ctrltransfer {   2822 struct vki_usbdevfs_ctrltransfer {
2823    __vki_u8 bRequestType ;   2823    __vki_u8 bRequestType ;
2824    __vki_u8 bRequest ;   2824    __vki_u8 bRequest ;
2825    __vki_u16 wValue ;   2825    __vki_u16 wValue ;
2826    __vki_u16 wIndex ;   2826    __vki_u16 wIndex ;
2827    __vki_u16 wLength ;   2827    __vki_u16 wLength ;
2828    __vki_u32 timeout ;   2828    __vki_u32 timeout ;
2829    void *data ;   2829    void *data ;
2830 };   2830 };
2831 struct vki_usbdevfs_bulktransfer {   2831 struct vki_usbdevfs_bulktransfer {
2832    unsigned int ep ;   2832    unsigned int ep ;
2833    unsigned int len ;   2833    unsigned int len ;
2834    unsigned int timeout ;   2834    unsigned int timeout ;
2835    void *data ;   2835    void *data ;
2836 };   2836 };
2837 struct vki_usbdevfs_getdriver {   2837 struct vki_usbdevfs_getdriver {
2838    unsigned int interface ;   2838    unsigned int interface ;
2839    char driver[256] ;   2839    char driver[256] ;
2840 };   2840 };
2841 struct vki_usbdevfs_connectinfo {   2841 struct vki_usbdevfs_connectinfo {
2842    unsigned int devnum ;   2842    unsigned int devnum ;
2843    unsigned char slow ;   2843    unsigned char slow ;
2844 };   2844 };
2845 struct vki_usbdevfs_iso_packet_desc {   2845 struct vki_usbdevfs_iso_packet_desc {
2846    unsigned int length ;   2846    unsigned int length ;
2847    unsigned int actual_length ;   2847    unsigned int actual_length ;
2848    unsigned int status ;   2848    unsigned int status ;
2849 };   2849 };
2850 struct vki_usbdevfs_urb {   2850 struct vki_usbdevfs_urb {
2851    unsigned char type ;   2851    unsigned char type ;
2852    unsigned char endpoint ;   2852    unsigned char endpoint ;
2853    int status ;   2853    int status ;
2854    unsigned int flags ;   2854    unsigned int flags ;
2855    void *buffer ;   2855    void *buffer ;
2856    int buffer_length ;   2856    int buffer_length ;
2857    int actual_length ;   2857    int actual_length ;
2858    int start_frame ;   2858    int start_frame ;
2859    int number_of_packets ;   2859    int number_of_packets ;
2860    int error_count ;   2860    int error_count ;
2861    unsigned int signr ;   2861    unsigned int signr ;
2862    void *usercontext ;   2862    void *usercontext ;
2863    struct vki_usbdevfs_iso_packet_desc iso_frame_desc[0] ;   2863    struct vki_usbdevfs_iso_packet_desc iso_frame_desc[0] ;
2864 };   2864 };
2865 struct vki_usbdevfs_ioctl {   2865 struct vki_usbdevfs_ioctl {
2866    int ifno ;   2866    int ifno ;
2867    int ioctl_code ;   2867    int ioctl_code ;
2868    void *data ;   2868    void *data ;
2869 };   2869 };
2870 struct vki_usbdevfs_setuppacket {   2870 struct vki_usbdevfs_setuppacket {
2871    __vki_u8 bRequestType ;   2871    __vki_u8 bRequestType ;
2872    __vki_u8 bRequest ;   2872    __vki_u8 bRequest ;
2873    __vki_u16 wValue ;   2873    __vki_u16 wValue ;
2874    __vki_u16 wIndex ;   2874    __vki_u16 wIndex ;
2875    __vki_u16 wLength ;   2875    __vki_u16 wLength ;
2876 };   2876 };
2877 struct vki_i2c_msg {   2877 struct vki_i2c_msg {
2878    __vki_u16 addr ;   2878    __vki_u16 addr ;
2879    __vki_u16 flags ;   2879    __vki_u16 flags ;
2880    __vki_u16 len ;   2880    __vki_u16 len ;
2881    __vki_u8 *buf ;   2881    __vki_u8 *buf ;
2882 };   2882 };
2883 struct vki_i2c_rdwr_ioctl_data {   2883 struct vki_i2c_rdwr_ioctl_data {
2884    struct vki_i2c_msg *msgs ;   2884    struct vki_i2c_msg *msgs ;
2885    __vki_u32 nmsgs ;   2885    __vki_u32 nmsgs ;
2886 };   2886 };
2887 typedef vki_int32_t vki_key_serial_t;   2887 typedef vki_int32_t vki_key_serial_t;
2888 typedef vki_uint32_t vki_key_perm_t;   2888 typedef vki_uint32_t vki_key_perm_t;
2889 struct vki_iw_param {   2889 struct vki_iw_param {
2890    __vki_s32 value ;   2890    __vki_s32 value ;
2891    __vki_u8 fixed ;   2891    __vki_u8 fixed ;
2892    __vki_u8 disabled ;   2892    __vki_u8 disabled ;
2893    __vki_u16 flags ;   2893    __vki_u16 flags ;
2894 };   2894 };
2895 struct vki_iw_point {   2895 struct vki_iw_point {
2896    void *pointer ;   2896    void *pointer ;
2897    __vki_u16 length ;   2897    __vki_u16 length ;
2898    __vki_u16 flags ;   2898    __vki_u16 flags ;
2899 };   2899 };
2900 struct vki_iw_freq {   2900 struct vki_iw_freq {
2901    __vki_s32 m ;   2901    __vki_s32 m ;
2902    __vki_s16 e ;   2902    __vki_s16 e ;
2903    __vki_u8 i ;   2903    __vki_u8 i ;
2904    __vki_u8 flags ;   2904    __vki_u8 flags ;
2905 };   2905 };
2906 struct vki_iw_quality {   2906 struct vki_iw_quality {
2907    __vki_u8 qual ;   2907    __vki_u8 qual ;
2908    __vki_u8 level ;   2908    __vki_u8 level ;
2909    __vki_u8 noise ;   2909    __vki_u8 noise ;
2910    __vki_u8 updated ;   2910    __vki_u8 updated ;
2911 };   2911 };
2912 union vki_iwreq_data {   2912 union vki_iwreq_data {
2913    char name[16] ;   2913    char name[16] ;
2914    struct vki_iw_point essid ;   2914    struct vki_iw_point essid ;
2915    struct vki_iw_param nwid ;   2915    struct vki_iw_param nwid ;
2916    struct vki_iw_freq freq ;   2916    struct vki_iw_freq freq ;
2917    struct vki_iw_param sens ;   2917    struct vki_iw_param sens ;
2918    struct vki_iw_param bitrate ;   2918    struct vki_iw_param bitrate ;
2919    struct vki_iw_param txpower ;   2919    struct vki_iw_param txpower ;
2920    struct vki_iw_param rts ;   2920    struct vki_iw_param rts ;
2921    struct vki_iw_param frag ;   2921    struct vki_iw_param frag ;
2922    __vki_u32 mode ;   2922    __vki_u32 mode ;
2923    struct vki_iw_param retry ;   2923    struct vki_iw_param retry ;
2924    struct vki_iw_point encoding ;   2924    struct vki_iw_point encoding ;
2925    struct vki_iw_param power ;   2925    struct vki_iw_param power ;
2926    struct vki_iw_quality qual ;   2926    struct vki_iw_quality qual ;
2927    struct vki_sockaddr ap_addr ;   2927    struct vki_sockaddr ap_addr ;
2928    struct vki_sockaddr addr ;   2928    struct vki_sockaddr addr ;
2929    struct vki_iw_param param ;   2929    struct vki_iw_param param ;
2930    struct vki_iw_point data ;   2930    struct vki_iw_point data ;
2931 };   2931 };
2932 union __anonunion_ifr_ifrn_100 {   2932 union __anonunion_ifr_ifrn_100 {
2933    char ifrn_name[16] ;   2933    char ifrn_name[16] ;
2934 };   2934 };
2935 struct vki_iwreq {   2935 struct vki_iwreq {
2936    union __anonunion_ifr_ifrn_100 ifr_ifrn ;   2936    union __anonunion_ifr_ifrn_100 ifr_ifrn ;
2937    union vki_iwreq_data u ;   2937    union vki_iwreq_data u ;
2938 };   2938 };
2939 union __anonunion____missing_field_name_101 {   2939 union __anonunion____missing_field_name_101 {
2940    __vki_u64 sample_period ;   2940    __vki_u64 sample_period ;
2941    __vki_u64 sample_freq ;   2941    __vki_u64 sample_freq ;
2942 };   2942 };
2943 union __anonunion____missing_field_name_102 {   2943 union __anonunion____missing_field_name_102 {
2944    __vki_u32 wakeup_events ;   2944    __vki_u32 wakeup_events ;
2945    __vki_u32 wakeup_watermark ;   2945    __vki_u32 wakeup_watermark ;
2946 };   2946 };
2947 union __anonunion____missing_field_name_103 {   2947 union __anonunion____missing_field_name_103 {
2948    __vki_u64 bp_addr ;   2948    __vki_u64 bp_addr ;
2949    __vki_u64 config1 ;   2949    __vki_u64 config1 ;
2950 };   2950 };
2951 union __anonunion____missing_field_name_104 {   2951 union __anonunion____missing_field_name_104 {
2952    __vki_u64 bp_len ;   2952    __vki_u64 bp_len ;
2953    __vki_u64 config2 ;   2953    __vki_u64 config2 ;
2954 };   2954 };
2955 struct vki_perf_event_attr {   2955 struct vki_perf_event_attr {
2956    __vki_u32 type ;   2956    __vki_u32 type ;
2957    __vki_u32 size ;   2957    __vki_u32 size ;
2958    __vki_u64 config ;   2958    __vki_u64 config ;
2959    union __anonunion____missing_field_name_101 __annonCompField1 ;   2959    union __anonunion____missing_field_name_101 __annonCompField1 ;
2960    __vki_u64 sample_type ;   2960    __vki_u64 sample_type ;
2961    __vki_u64 read_format ;   2961    __vki_u64 read_format ;
2962    __vki_u64 disabled : 1 ;   2962    __vki_u64 disabled : 1 ;
2963    __vki_u64 inherit : 1 ;   2963    __vki_u64 inherit : 1 ;
2964    __vki_u64 pinned : 1 ;   2964    __vki_u64 pinned : 1 ;
2965    __vki_u64 exclusive : 1 ;   2965    __vki_u64 exclusive : 1 ;
2966    __vki_u64 exclude_user : 1 ;   2966    __vki_u64 exclude_user : 1 ;
2967    __vki_u64 exclude_kernel : 1 ;   2967    __vki_u64 exclude_kernel : 1 ;
2968    __vki_u64 exclude_hv : 1 ;   2968    __vki_u64 exclude_hv : 1 ;
2969    __vki_u64 exclude_idle : 1 ;   2969    __vki_u64 exclude_idle : 1 ;
2970    __vki_u64 mmap : 1 ;   2970    __vki_u64 mmap : 1 ;
2971    __vki_u64 comm : 1 ;   2971    __vki_u64 comm : 1 ;
2972    __vki_u64 freq : 1 ;   2972    __vki_u64 freq : 1 ;
2973    __vki_u64 inherit_stat : 1 ;   2973    __vki_u64 inherit_stat : 1 ;
2974    __vki_u64 enable_on_exec : 1 ;   2974    __vki_u64 enable_on_exec : 1 ;
2975    __vki_u64 task : 1 ;   2975    __vki_u64 task : 1 ;
2976    __vki_u64 watermark : 1 ;   2976    __vki_u64 watermark : 1 ;
2977    __vki_u64 precise_ip : 2 ;   2977    __vki_u64 precise_ip : 2 ;
2978    __vki_u64 mmap_data : 1 ;   2978    __vki_u64 mmap_data : 1 ;
2979    __vki_u64 sample_id_all : 1 ;   2979    __vki_u64 sample_id_all : 1 ;
2980    __vki_u64 __reserved_1 : 45 ;   2980    __vki_u64 __reserved_1 : 45 ;
2981    union __anonunion____missing_field_name_102 __annonCompField2 ;   2981    union __anonunion____missing_field_name_102 __annonCompField2 ;
2982    __vki_u32 bp_type ;   2982    __vki_u32 bp_type ;
2983    union __anonunion____missing_field_name_103 __annonCompField3 ;   2983    union __anonunion____missing_field_name_103 __annonCompField3 ;
2984    union __anonunion____missing_field_name_104 __annonCompField4 ;   2984    union __anonunion____missing_field_name_104 __annonCompField4 ;
2985 };   2985 };
2986 struct vki_getcpu_cache {   2986 struct vki_getcpu_cache {
2987    unsigned long blob[128U / sizeof(long )] ;   2987    unsigned long blob[128U / sizeof(long )] ;
2988 };   2988 };
2989 struct __anonstruct_vki_bdaddr_t_105 {   2989 struct __anonstruct_vki_bdaddr_t_105 {
2990    __vki_u8 b[6] ;   2990    __vki_u8 b[6] ;
2991 } __attribute__((__packed__)) ;   2991 } __attribute__((__packed__)) ;
2992 typedef struct __anonstruct_vki_bdaddr_t_105 vki_bdaddr_t;   2992 typedef struct __anonstruct_vki_bdaddr_t_105 vki_bdaddr_t;
2993 struct vki_inquiry_info {   2993 struct vki_inquiry_info {
2994    vki_bdaddr_t bdaddr ;   2994    vki_bdaddr_t bdaddr ;
2995    __vki_u8 pscan_rep_mode ;   2995    __vki_u8 pscan_rep_mode ;
2996    __vki_u8 pscan_period_mode ;   2996    __vki_u8 pscan_period_mode ;
2997    __vki_u8 pscan_mode ;   2997    __vki_u8 pscan_mode ;
2998    __vki_u8 dev_class[3] ;   2998    __vki_u8 dev_class[3] ;
2999    __vki_le16 clock_offset ;   2999    __vki_le16 clock_offset ;
3000 } __attribute__((__packed__)) ;   3000 } __attribute__((__packed__)) ;
3001 struct vki_hci_inquiry_req {   3001 struct vki_hci_inquiry_req {
3002    __vki_u16 dev_id ;   3002    __vki_u16 dev_id ;
3003    __vki_u16 flags ;   3003    __vki_u16 flags ;
3004    __vki_u8 lap[3] ;   3004    __vki_u8 lap[3] ;
3005    __vki_u8 length ;   3005    __vki_u8 length ;
3006    __vki_u8 num_rsp ;   3006    __vki_u8 num_rsp ;
3007 };   3007 };
3008 enum __anonenum_SegKind_106 {   3008 enum __anonenum_SegKind_106 {
3009     SkFree = 0,   3009     SkFree = 0,
3010     SkAnonC = 1,   3010     SkAnonC = 1,
3011     SkAnonV = 2,   3011     SkAnonV = 2,
3012     SkFileC = 3,   3012     SkFileC = 3,
3013     SkFileV = 4,   3013     SkFileV = 4,
3014     SkShmC = 5,   3014     SkShmC = 5,
3015     SkResvn = 6   3015     SkResvn = 6
3016 } ;   3016 } ;
3017 typedef enum __anonenum_SegKind_106 SegKind;   3017 typedef enum __anonenum_SegKind_106 SegKind;
3018 enum __anonenum_ShrinkMode_107 {   3018 enum __anonenum_ShrinkMode_107 {
3019     SmLower = 0,   3019     SmLower = 0,
3020     SmFixed = 1,   3020     SmFixed = 1,
3021     SmUpper = 2   3021     SmUpper = 2
3022 } ;   3022 } ;
3023 typedef enum __anonenum_ShrinkMode_107 ShrinkMode;   3023 typedef enum __anonenum_ShrinkMode_107 ShrinkMode;
3024 struct __anonstruct_NSegment_108 {   3024 struct __anonstruct_NSegment_108 {
3025    SegKind kind ;   3025    SegKind kind ;
3026    Addr start ;   3026    Addr start ;
3027    Addr end ;   3027    Addr end ;
3028    ShrinkMode smode ;   3028    ShrinkMode smode ;
3029    ULong dev ;   3029    ULong dev ;
3030    ULong ino ;   3030    ULong ino ;
3031    Off64T offset ;   3031    Off64T offset ;
3032    UInt mode ;   3032    UInt mode ;
3033    Int fnIdx ;   3033    Int fnIdx ;
3034    Bool hasR ;   3034    Bool hasR ;
3035    Bool hasW ;   3035    Bool hasW ;
3036    Bool hasX ;   3036    Bool hasX ;
3037    Bool hasT ;   3037    Bool hasT ;
3038    Bool isCH ;   3038    Bool isCH ;
3039    Bool mark ;   3039    Bool mark ;
3040 };   3040 };
3041 typedef struct __anonstruct_NSegment_108 NSegment;   3041 typedef struct __anonstruct_NSegment_108 NSegment;
3042 enum __anonenum_rkind_110 {   3042 enum __anonenum_rkind_110 {
3043     MFixed = 0,   3043     MFixed = 0,
3044     MHint = 1,   3044     MHint = 1,
3045     MAny = 2   3045     MAny = 2
3046 } ;   3046 } ;
3047 struct __anonstruct_MapRequest_109 {   3047 struct __anonstruct_MapRequest_109 {
3048    enum __anonenum_rkind_110 rkind ;   3048    enum __anonenum_rkind_110 rkind ;
3049    Addr start ;   3049    Addr start ;
3050    Addr len ;   3050    Addr len ;
3051 };   3051 };
3052 typedef struct __anonstruct_MapRequest_109 MapRequest;   3052 typedef struct __anonstruct_MapRequest_109 MapRequest;
3053 struct __anonstruct_VgStack_111 {   3053 struct __anonstruct_VgStack_111 {
3054    HChar bytes[1064960] ;   3054    HChar bytes[1064960] ;
3055 };   3055 };
3056 typedef struct __anonstruct_VgStack_111 VgStack;   3056 typedef struct __anonstruct_VgStack_111 VgStack;
3057 enum __anonenum_VgMsgKind_112 {   3057 enum __anonenum_VgMsgKind_112 {
3058     Vg_FailMsg = 0,   3058     Vg_FailMsg = 0,
3059     Vg_UserMsg = 1,   3059     Vg_UserMsg = 1,
3060     Vg_DebugMsg = 2,   3060     Vg_DebugMsg = 2,
3061     Vg_ClientMsg = 3   3061     Vg_ClientMsg = 3
3062 } ;   3062 } ;
3063 typedef enum __anonenum_VgMsgKind_112 VgMsgKind;   3063 typedef enum __anonenum_VgMsgKind_112 VgMsgKind;
3064 struct __anonstruct_OutputSink_113 {   3064 struct __anonstruct_OutputSink_113 {
3065    Int fd ;   3065    Int fd ;
3066    Bool is_socket ;   3066    Bool is_socket ;
3067 };   3067 };
3068 typedef struct __anonstruct_OutputSink_113 OutputSink;   3068 typedef struct __anonstruct_OutputSink_113 OutputSink;
3069 typedef Int ArenaId;   3069 typedef Int ArenaId;
3070 struct vg_mallinfo {   3070 struct vg_mallinfo {
3071    int arena ;   3071    int arena ;
3072    int ordblks ;   3072    int ordblks ;
3073    int smblks ;   3073    int smblks ;
3074    int hblks ;   3074    int hblks ;
3075    int hblkhd ;   3075    int hblkhd ;
3076    int usmblks ;   3076    int usmblks ;
3077    int fsmblks ;   3077    int fsmblks ;
3078    int uordblks ;   3078    int uordblks ;
3079    int fordblks ;   3079    int fordblks ;
3080    int keepcost ;   3080    int keepcost ;
3081 };   3081 };
3082 enum __anonenum_VgVgdb_114 {   3082 enum __anonenum_VgVgdb_114 {
3083     Vg_VgdbNo = 0,   3083     Vg_VgdbNo = 0,
3084     Vg_VgdbYes = 1,   3084     Vg_VgdbYes = 1,
3085     Vg_VgdbFull = 2   3085     Vg_VgdbFull = 2
3086 } ;   3086 } ;
3087 typedef enum __anonenum_VgVgdb_114 VgVgdb;   3087 typedef enum __anonenum_VgVgdb_114 VgVgdb;
3088 enum FairSchedType {   3088 enum FairSchedType {
3089     disable_fair_sched = 0,   3089     disable_fair_sched = 0,
3090     enable_fair_sched = 1,   3090     enable_fair_sched = 1,
3091     try_fair_sched = 2   3091     try_fair_sched = 2
3092 } ;   3092 } ;
3093 enum __anonenum_VgSmc_115 {   3093 enum __anonenum_VgSmc_115 {
3094     Vg_SmcNone = 0,   3094     Vg_SmcNone = 0,
3095     Vg_SmcStack = 1,   3095     Vg_SmcStack = 1,
3096     Vg_SmcAll = 2,   3096     Vg_SmcAll = 2,
3097     Vg_SmcAllNonFile = 3   3097     Vg_SmcAllNonFile = 3
3098 } ;   3098 } ;
3099 typedef enum __anonenum_VgSmc_115 VgSmc;   3099 typedef enum __anonenum_VgSmc_115 VgSmc;
3100 typedef int __jmp_buf[6];   3100 typedef int __jmp_buf[6];
3101 typedef int __sig_atomic_t;   3101 typedef int __sig_atomic_t;
3102 struct __anonstruct___sigset_t_116 {   3102 struct __anonstruct___sigset_t_116 {
3103    unsigned long __val[1024U / (8U * sizeof(unsigned long ))] ;   3103    unsigned long __val[1024U / (8U * sizeof(unsigned long ))] ;
3104 };   3104 };
3105 typedef struct __anonstruct___sigset_t_116 __sigset_t;   3105 typedef struct __anonstruct___sigset_t_116 __sigset_t;
3106 struct __jmp_buf_tag {   3106 struct __jmp_buf_tag {
3107    __jmp_buf __jmpbuf ;   3107    __jmp_buf __jmpbuf ;
3108    int __mask_was_saved ;   3108    int __mask_was_saved ;
3109    __sigset_t __saved_mask ;   3109    __sigset_t __saved_mask ;
3110 };   3110 };
3111 typedef struct __jmp_buf_tag jmp_buf[1];   3111 typedef struct __jmp_buf_tag jmp_buf[1];
3112 typedef struct __jmp_buf_tag sigjmp_buf[1];   3112 typedef struct __jmp_buf_tag sigjmp_buf[1];
3113 enum ThreadStatus {   3113 enum ThreadStatus {
3114     VgTs_Empty = 0,   3114     VgTs_Empty = 0,
3115     VgTs_Init = 1,   3115     VgTs_Init = 1,
3116     VgTs_Runnable = 2,   3116     VgTs_Runnable = 2,
3117     VgTs_WaitSys = 3,   3117     VgTs_WaitSys = 3,
3118     VgTs_Yielding = 4,   3118     VgTs_Yielding = 4,
3119     VgTs_Zombie = 5   3119     VgTs_Zombie = 5
3120 } ;   3120 } ;
3121 typedef enum ThreadStatus ThreadStatus;   3121 typedef enum ThreadStatus ThreadStatus;
3122 enum __anonenum_VgSchedReturnCode_117 {   3122 enum __anonenum_VgSchedReturnCode_117 {
3123     VgSrc_None = 0,   3123     VgSrc_None = 0,
3124     VgSrc_ExitThread = 1,   3124     VgSrc_ExitThread = 1,
3125     VgSrc_ExitProcess = 2,   3125     VgSrc_ExitProcess = 2,
3126     VgSrc_FatalSig = 3   3126     VgSrc_FatalSig = 3
3127 } ;   3127 } ;
3128 typedef enum __anonenum_VgSchedReturnCode_117 VgSchedReturnCode;   3128 typedef enum __anonenum_VgSchedReturnCode_117 VgSchedReturnCode;
3129 typedef VexGuestX86State VexGuestArchState;   3129 typedef VexGuestX86State VexGuestArchState;
3130 struct SyscallStatus;   3130 struct SyscallStatus;
3131 struct SyscallStatus;   3131 struct SyscallStatus;
3132 struct SyscallArgs;   3132 struct SyscallArgs;
3133 struct SyscallArgs;   3133 struct SyscallArgs;
3134 struct __anonstruct_ThreadArchState_118 {   3134 struct __anonstruct_ThreadArchState_118 {
3135    VexGuestArchState vex  __attribute__((__aligned__(32))) ;   3135    VexGuestArchState vex  __attribute__((__aligned__(32))) ;
3136    VexGuestArchState vex_shadow1  __attribute__((__aligned__(32))) ;   3136    VexGuestArchState vex_shadow1  __attribute__((__aligned__(32))) ;
3137    VexGuestArchState vex_shadow2  __attribute__((__aligned__(32))) ;   3137    VexGuestArchState vex_shadow2  __attribute__((__aligned__(32))) ;
3138    UChar vex_spill[4096]  __attribute__((__aligned__(32))) ;   3138    UChar vex_spill[4096]  __attribute__((__aligned__(32))) ;
3139 };   3139 };
3140 typedef struct __anonstruct_ThreadArchState_118 ThreadArchState;   3140 typedef struct __anonstruct_ThreadArchState_118 ThreadArchState;
3141 struct __anonstruct_ThreadOSstate_119 {   3141 struct __anonstruct_ThreadOSstate_119 {
3142    Int lwpid ;   3142    Int lwpid ;
3143    Int threadgroup ;   3143    Int threadgroup ;
3144    ThreadId parent ;   3144    ThreadId parent ;
3145    Addr valgrind_stack_base ;   3145    Addr valgrind_stack_base ;
3146    Addr valgrind_stack_init_SP ;   3146    Addr valgrind_stack_init_SP ;
3147    Word exitcode ;   3147    Word exitcode ;
3148    Int fatalsig ;   3148    Int fatalsig ;
3149 };   3149 };
3150 typedef struct __anonstruct_ThreadOSstate_119 ThreadOSstate;   3150 typedef struct __anonstruct_ThreadOSstate_119 ThreadOSstate;
3151 struct SigQueue;   3151 struct SigQueue;
3152 struct __anonstruct_ThreadState_120 {   3152 struct __anonstruct_ThreadState_120 {
3153    ThreadId tid ;   3153    ThreadId tid ;
3154    ThreadStatus status ;   3154    ThreadStatus status ;
3155    VgSchedReturnCode exitreason ;   3155    VgSchedReturnCode exitreason ;
3156    ThreadArchState arch ;   3156    ThreadArchState arch ;
3157    vki_sigset_t sig_mask ;   3157    vki_sigset_t sig_mask ;
3158    vki_sigset_t tmp_sig_mask ;   3158    vki_sigset_t tmp_sig_mask ;
3159    struct SigQueue *sig_queue ;   3159    struct SigQueue *sig_queue ;
3160    SizeT client_stack_szB ;   3160    SizeT client_stack_szB ;
3161    Addr client_stack_highest_word ;   3161    Addr client_stack_highest_word ;
3162    vki_stack_t altstack ;   3162    vki_stack_t altstack ;
3163    ThreadOSstate os_state ;   3163    ThreadOSstate os_state ;
3164    UInt err_disablement_level ;   3164    UInt err_disablement_level ;
3165    Bool sched_jmpbuf_valid ;   3165    Bool sched_jmpbuf_valid ;
3166    UInt sched_jmpbuf[9] ;   3166    UInt sched_jmpbuf[9] ;
3167 };   3167 };
3168 typedef struct __anonstruct_ThreadState_120 ThreadState;   3168 typedef struct __anonstruct_ThreadState_120 ThreadState;
3169 struct __anonstruct_FastCacheEntry_121 {   3169 struct __anonstruct_FastCacheEntry_121 {
3170    Addr guest ;   3170    Addr guest ;
3171    Addr host ;   3171    Addr host ;
3172 };   3172 };
3173 typedef struct __anonstruct_FastCacheEntry_121 FastCacheEntry;   3173 typedef struct __anonstruct_FastCacheEntry_121 FastCacheEntry;
3174 struct _BBProfEntry {   3174 struct _BBProfEntry {
3175    Addr64 addr ;   3175    Addr64 addr ;
3176    ULong score ;   3176    ULong score ;
3177 };   3177 };
3178 typedef struct _BBProfEntry BBProfEntry;   3178 typedef struct _BBProfEntry BBProfEntry;
3179 struct _ExeContext;   3179 struct _ExeContext;
3180 typedef struct _ExeContext ExeContext;   3180 typedef struct _ExeContext ExeContext;
3181 enum __anonenum_VgRes_122 {   3181 enum __anonenum_VgRes_122 {
3182     Vg_LowRes = 0,   3182     Vg_LowRes = 0,
3183     Vg_MedRes = 1,   3183     Vg_MedRes = 1,
3184     Vg_HighRes = 2   3184     Vg_HighRes = 2
3185 } ;   3185 } ;
3186 typedef enum __anonenum_VgRes_122 VgRes;   3186 typedef enum __anonenum_VgRes_122 VgRes;
3187 typedef Int ErrorKind;   3187 typedef Int ErrorKind;
3188 struct _Error;   3188 struct _Error;
3189 typedef struct _Error Error;   3189 typedef struct _Error Error;
3190 typedef Int SuppKind;   3190 typedef Int SuppKind;
3191 struct _Supp;   3191 struct _Supp;
3192 typedef struct _Supp Supp;   3192 typedef struct _Supp Supp;
3193 struct __anonstruct_VgCallbackClosure_123 {   3193 struct __anonstruct_VgCallbackClosure_123 {
3194    Addr64 nraddr ;   3194    Addr64 nraddr ;
3195    Addr64 readdr ;   3195    Addr64 readdr ;
3196    ThreadId tid ;   3196    ThreadId tid ;
3197 };   3197 };
3198 typedef struct __anonstruct_VgCallbackClosure_123 VgCallbackClosure;   3198 typedef struct __anonstruct_VgCallbackClosure_123 VgCallbackClosure;
3199 enum __anonenum_CorePart_124 {   3199 enum __anonenum_CorePart_124 {
3200     Vg_CoreStartup = 1,   3200     Vg_CoreStartup = 1,
3201     Vg_CoreSignal = 2,   3201     Vg_CoreSignal = 2,
3202     Vg_CoreSysCall = 3,   3202     Vg_CoreSysCall = 3,
3203     Vg_CoreSysCallArgInMem = 4,   3203     Vg_CoreSysCallArgInMem = 4,
3204     Vg_CoreTranslate = 5,   3204     Vg_CoreTranslate = 5,
3205     Vg_CoreClientReq = 6   3205     Vg_CoreClientReq = 6
3206 } ;   3206 } ;
3207 typedef enum __anonenum_CorePart_124 CorePart;   3207 typedef enum __anonenum_CorePart_124 CorePart;
3208 struct __anonstruct_VgDetails_125 {   3208 struct __anonstruct_VgDetails_125 {
3209    Char *name ;   3209    Char *name ;
3210    Char *version ;   3210    Char *version ;
3211    Char *description ;   3211    Char *description ;
3212    Char *copyright_author ;   3212    Char *copyright_author ;
3213    Char *bug_reports_to ;   3213    Char *bug_reports_to ;
3214    UInt avg_translation_sizeB ;   3214    UInt avg_translation_sizeB ;
3215 };   3215 };
3216 typedef struct __anonstruct_VgDetails_125 VgDetails;   3216 typedef struct __anonstruct_VgDetails_125 VgDetails;
3217 struct __anonstruct_VgNeeds_126 {   3217 struct __anonstruct_VgNeeds_126 {
3218    Bool libc_freeres ;   3218    Bool libc_freeres ;
3219    Bool core_errors ;   3219    Bool core_errors ;
3220    Bool tool_errors ;   3220    Bool tool_errors ;
3221    Bool superblock_discards ;   3221    Bool superblock_discards ;
3222    Bool command_line_options ;   3222    Bool command_line_options ;
3223    Bool client_requests ;   3223    Bool client_requests ;
3224    Bool syscall_wrapper ;   3224    Bool syscall_wrapper ;
3225    Bool sanity_checks ;   3225    Bool sanity_checks ;
3226    Bool var_info ;   3226    Bool var_info ;
3227    Bool malloc_replacement ;   3227    Bool malloc_replacement ;
3228    Bool xml_output ;   3228    Bool xml_output ;
3229    Bool final_IR_tidy_pass ;   3229    Bool final_IR_tidy_pass ;
3230 };   3230 };
3231 typedef struct __anonstruct_VgNeeds_126 VgNeeds;   3231 typedef struct __anonstruct_VgNeeds_126 VgNeeds;
3232 struct __anonstruct_VgToolInterface_127 {   3232 struct __anonstruct_VgToolInterface_127 {
3233    void (*tool_pre_clo_init)(void) ;   3233    void (*tool_pre_clo_init)(void) ;
3234    void (*tool_post_clo_init)(void) ;   3234    void (*tool_post_clo_init)(void) ;
3235    IRSB *(*tool_instrument)(VgCallbackClosure * , IRSB * , VexGuestLayout * ,   3235    IRSB *(*tool_instrument)(VgCallbackClosure * , IRSB * , VexGuestLayout * ,
3236                             VexGuestExtents * , IRType  , IRType  ) ;   3236                             VexGuestExtents * , IRType  , IRType  ) ;
3237    void (*tool_fini)(Int  ) ;   3237    void (*tool_fini)(Int  ) ;
3238    Bool (*tool_eq_Error)(VgRes  , Error * , Error * ) ;   3238    Bool (*tool_eq_Error)(VgRes  , Error * , Error * ) ;
3239    void (*tool_before_pp_Error)(Error * ) ;   3239    void (*tool_before_pp_Error)(Error * ) ;
3240    void (*tool_pp_Error)(Error * ) ;   3240    void (*tool_pp_Error)(Error * ) ;
3241    Bool tool_show_ThreadIDs_for_errors ;   3241    Bool tool_show_ThreadIDs_for_errors ;
3242    UInt (*tool_update_extra)(Error * ) ;   3242    UInt (*tool_update_extra)(Error * ) ;
3243    Bool (*tool_recognised_suppression)(Char * , Supp * ) ;   3243    Bool (*tool_recognised_suppression)(Char * , Supp * ) ;
3244    Bool (*tool_read_extra_suppression_info)(Int  , Char ** , SizeT * , Supp * ) ;   3244    Bool (*tool_read_extra_suppression_info)(Int  , Char ** , SizeT * , Supp * ) ;
3245    Bool (*tool_error_matches_suppression)(Error * , Supp * ) ;   3245    Bool (*tool_error_matches_suppression)(Error * , Supp * ) ;
3246    Char *(*tool_get_error_name)(Error * ) ;   3246    Char *(*tool_get_error_name)(Error * ) ;
3247    Bool (*tool_get_extra_suppression_info)(Error * , Char * , Int  ) ;   3247    Bool (*tool_get_extra_suppression_info)(Error * , Char * , Int  ) ;
3248    void (*tool_discard_superblock_info)(Addr64  , VexGuestExtents  ) ;   3248    void (*tool_discard_superblock_info)(Addr64  , VexGuestExtents  ) ;
3249    Bool (*tool_process_cmd_line_option)(Char * ) ;   3249    Bool (*tool_process_cmd_line_option)(Char * ) ;
3250    void (*tool_print_usage)(void) ;   3250    void (*tool_print_usage)(void) ;
3251    void (*tool_print_debug_usage)(void) ;   3251    void (*tool_print_debug_usage)(void) ;
3252    Bool (*tool_handle_client_request)(ThreadId  , UWord * , UWord * ) ;   3252    Bool (*tool_handle_client_request)(ThreadId  , UWord * , UWord * ) ;
3253    void (*tool_pre_syscall)(ThreadId  , UInt  , UWord * , UInt  ) ;   3253    void (*tool_pre_syscall)(ThreadId  , UInt  , UWord * , UInt  ) ;
3254    void (*tool_post_syscall)(ThreadId  , UInt  , UWord * , UInt  , SysRes  ) ;   3254    void (*tool_post_syscall)(ThreadId  , UInt  , UWord * , UInt  , SysRes  ) ;
3255    Bool (*tool_cheap_sanity_check)(void) ;   3255    Bool (*tool_cheap_sanity_check)(void) ;
3256    Bool (*tool_expensive_sanity_check)(void) ;   3256    Bool (*tool_expensive_sanity_check)(void) ;
3257    void *(*tool_malloc)(ThreadId  , SizeT  ) ;   3257    void *(*tool_malloc)(ThreadId  , SizeT  ) ;
3258    void *(*tool___builtin_new)(ThreadId  , SizeT  ) ;   3258    void *(*tool___builtin_new)(ThreadId  , SizeT  ) ;
3259    void *(*tool___builtin_vec_new)(ThreadId  , SizeT  ) ;   3259    void *(*tool___builtin_vec_new)(ThreadId  , SizeT  ) ;
3260    void *(*tool_memalign)(ThreadId  , SizeT  , SizeT  ) ;   3260    void *(*tool_memalign)(ThreadId  , SizeT  , SizeT  ) ;
3261    void *(*tool_calloc)(ThreadId  , SizeT  , SizeT  ) ;   3261    void *(*tool_calloc)(ThreadId  , SizeT  , SizeT  ) ;
3262    void (*tool_free)(ThreadId  , void * ) ;   3262    void (*tool_free)(ThreadId  , void * ) ;
3263    void (*tool___builtin_delete)(ThreadId  , void * ) ;   3263    void (*tool___builtin_delete)(ThreadId  , void * ) ;
3264    void (*tool___builtin_vec_delete)(ThreadId  , void * ) ;   3264    void (*tool___builtin_vec_delete)(ThreadId  , void * ) ;
3265    void *(*tool_realloc)(ThreadId  , void * , SizeT  ) ;   3265    void *(*tool_realloc)(ThreadId  , void * , SizeT  ) ;
3266    SizeT (*tool_malloc_usable_size)(ThreadId  , void * ) ;   3266    SizeT (*tool_malloc_usable_size)(ThreadId  , void * ) ;
3267    SizeT tool_client_redzone_szB ;   3267    SizeT tool_client_redzone_szB ;
3268    IRSB *(*tool_final_IR_tidy_pass)(IRSB * ) ;   3268    IRSB *(*tool_final_IR_tidy_pass)(IRSB * ) ;
3269    void (*track_new_mem_startup)(Addr  , SizeT  , Bool  , Bool  , Bool  ,   3269    void (*track_new_mem_startup)(Addr  , SizeT  , Bool  , Bool  , Bool  ,
3270                                  ULong  ) ;   3270                                  ULong  ) ;
3271    void (*track_new_mem_stack_signal)(Addr  , SizeT  , ThreadId  ) ;   3271    void (*track_new_mem_stack_signal)(Addr  , SizeT  , ThreadId  ) ;
3272    void (*track_new_mem_brk)(Addr  , SizeT  , ThreadId  ) ;   3272    void (*track_new_mem_brk)(Addr  , SizeT  , ThreadId  ) ;
3273    void (*track_new_mem_mmap)(Addr  , SizeT  , Bool  , Bool  , Bool  , ULong  ) ;   3273    void (*track_new_mem_mmap)(Addr  , SizeT  , Bool  , Bool  , Bool  , ULong  ) ;
3274    void (*track_copy_mem_remap)(Addr src , Addr dst , SizeT  ) ;   3274    void (*track_copy_mem_remap)(Addr src , Addr dst , SizeT  ) ;
3275    void (*track_change_mem_mprotect)(Addr  , SizeT  , Bool  , Bool  , Bool  ) ;   3275    void (*track_change_mem_mprotect)(Addr  , SizeT  , Bool  , Bool  , Bool  ) ;
3276    void (*track_die_mem_stack_signal)(Addr  , SizeT  ) ;   3276    void (*track_die_mem_stack_signal)(Addr  , SizeT  ) ;
3277    void (*track_die_mem_brk)(Addr  , SizeT  ) ;   3277    void (*track_die_mem_brk)(Addr  , SizeT  ) ;
3278    void (*track_die_mem_munmap)(Addr  , SizeT  ) ;   3278    void (*track_die_mem_munmap)(Addr  , SizeT  ) ;
3279    void ( __attribute__((__regparm__(2))) (*track_new_mem_stack_4_w_ECU))(Addr  ,   3279    void ( __attribute__((__regparm__(2))) (*track_new_mem_stack_4_w_ECU))(Addr  ,
3280                                                                           UInt  ) ;   3280                                                                           UInt  ) ;
3281    void ( __attribute__((__regparm__(2))) (*track_new_mem_stack_8_w_ECU))(Addr  ,   3281    void ( __attribute__((__regparm__(2))) (*track_new_mem_stack_8_w_ECU))(Addr  ,
3282                                                                           UInt  ) ;   3282                                                                           UInt  ) ;
3283    void ( __attribute__((__regparm__(2))) (*track_new_mem_stack_12_w_ECU))(Addr  ,   3283    void ( __attribute__((__regparm__(2))) (*track_new_mem_stack_12_w_ECU))(Addr  ,
3284                                                                            UInt  ) ;   3284                                                                            UInt  ) ;
3285    void ( __attribute__((__regparm__(2))) (*track_new_mem_stack_16_w_ECU))(Addr  ,   3285    void ( __attribute__((__regparm__(2))) (*track_new_mem_stack_16_w_ECU))(Addr  ,
3286                                                                            UInt  ) ;   3286                                                                            UInt  ) ;
3287    void ( __attribute__((__regparm__(2))) (*track_new_mem_stack_32_w_ECU))(Addr  ,   3287    void ( __attribute__((__regparm__(2))) (*track_new_mem_stack_32_w_ECU))(Addr  ,
3288                                                                            UInt  ) ;   3288                                                                            UInt  ) ;
3289    void ( __attribute__((__regparm__(2))) (*track_new_mem_stack_112_w_ECU))(Addr  ,   3289    void ( __attribute__((__regparm__(2))) (*track_new_mem_stack_112_w_ECU))(Addr  ,
3290                                                                             UInt  ) ;   3290                                                                             UInt  ) ;
3291    void ( __attribute__((__regparm__(2))) (*track_new_mem_stack_128_w_ECU))(Addr  ,   3291    void ( __attribute__((__regparm__(2))) (*track_new_mem_stack_128_w_ECU))(Addr  ,
3292                                                                             UInt  ) ;   3292                                                                             UInt  ) ;
3293    void ( __attribute__((__regparm__(2))) (*track_new_mem_stack_144_w_ECU))(Addr  ,   3293    void ( __attribute__((__regparm__(2))) (*track_new_mem_stack_144_w_ECU))(Addr  ,
3294                                                                             UInt  ) ;   3294                                                                             UInt  ) ;
3295    void ( __attribute__((__regparm__(2))) (*track_new_mem_stack_160_w_ECU))(Addr  ,   3295    void ( __attribute__((__regparm__(2))) (*track_new_mem_stack_160_w_ECU))(Addr  ,
3296                                                                             UInt  ) ;   3296                                                                             UInt  ) ;
3297    void (*track_new_mem_stack_w_ECU)(Addr  , SizeT  , UInt  ) ;   3297    void (*track_new_mem_stack_w_ECU)(Addr  , SizeT  , UInt  ) ;
3298    void ( __attribute__((__regparm__(1))) (*track_new_mem_stack_4))(Addr  ) ;   3298    void ( __attribute__((__regparm__(1))) (*track_new_mem_stack_4))(Addr  ) ;
3299    void ( __attribute__((__regparm__(1))) (*track_new_mem_stack_8))(Addr  ) ;   3299    void ( __attribute__((__regparm__(1))) (*track_new_mem_stack_8))(Addr  ) ;
3300    void ( __attribute__((__regparm__(1))) (*track_new_mem_stack_12))(Addr  ) ;   3300    void ( __attribute__((__regparm__(1))) (*track_new_mem_stack_12))(Addr  ) ;
3301    void ( __attribute__((__regparm__(1))) (*track_new_mem_stack_16))(Addr  ) ;   3301    void ( __attribute__((__regparm__(1))) (*track_new_mem_stack_16))(Addr  ) ;
3302    void ( __attribute__((__regparm__(1))) (*track_new_mem_stack_32))(Addr  ) ;   3302    void ( __attribute__((__regparm__(1))) (*track_new_mem_stack_32))(Addr  ) ;
3303    void ( __attribute__((__regparm__(1))) (*track_new_mem_stack_112))(Addr  ) ;   3303    void ( __attribute__((__regparm__(1))) (*track_new_mem_stack_112))(Addr  ) ;
3304    void ( __attribute__((__regparm__(1))) (*track_new_mem_stack_128))(Addr  ) ;   3304    void ( __attribute__((__regparm__(1))) (*track_new_mem_stack_128))(Addr  ) ;
3305    void ( __attribute__((__regparm__(1))) (*track_new_mem_stack_144))(Addr  ) ;   3305    void ( __attribute__((__regparm__(1))) (*track_new_mem_stack_144))(Addr  ) ;
3306    void ( __attribute__((__regparm__(1))) (*track_new_mem_stack_160))(Addr  ) ;   3306    void ( __attribute__((__regparm__(1))) (*track_new_mem_stack_160))(Addr  ) ;
3307    void (*track_new_mem_stack)(Addr  , SizeT  ) ;   3307    void (*track_new_mem_stack)(Addr  , SizeT  ) ;
3308    void ( __attribute__((__regparm__(1))) (*track_die_mem_stack_4))(Addr  ) ;   3308    void ( __attribute__((__regparm__(1))) (*track_die_mem_stack_4))(Addr  ) ;
3309    void ( __attribute__((__regparm__(1))) (*track_die_mem_stack_8))(Addr  ) ;   3309    void ( __attribute__((__regparm__(1))) (*track_die_mem_stack_8))(Addr  ) ;
3310    void ( __attribute__((__regparm__(1))) (*track_die_mem_stack_12))(Addr  ) ;   3310    void ( __attribute__((__regparm__(1))) (*track_die_mem_stack_12))(Addr  ) ;
3311    void ( __attribute__((__regparm__(1))) (*track_die_mem_stack_16))(Addr  ) ;   3311    void ( __attribute__((__regparm__(1))) (*track_die_mem_stack_16))(Addr  ) ;
3312    void ( __attribute__((__regparm__(1))) (*track_die_mem_stack_32))(Addr  ) ;   3312    void ( __attribute__((__regparm__(1))) (*track_die_mem_stack_32))(Addr  ) ;
3313    void ( __attribute__((__regparm__(1))) (*track_die_mem_stack_112))(Addr  ) ;   3313    void ( __attribute__((__regparm__(1))) (*track_die_mem_stack_112))(Addr  ) ;
3314    void ( __attribute__((__regparm__(1))) (*track_die_mem_stack_128))(Addr  ) ;   3314    void ( __attribute__((__regparm__(1))) (*track_die_mem_stack_128))(Addr  ) ;
3315    void ( __attribute__((__regparm__(1))) (*track_die_mem_stack_144))(Addr  ) ;   3315    void ( __attribute__((__regparm__(1))) (*track_die_mem_stack_144))(Addr  ) ;
3316    void ( __attribute__((__regparm__(1))) (*track_die_mem_stack_160))(Addr  ) ;   3316    void ( __attribute__((__regparm__(1))) (*track_die_mem_stack_160))(Addr  ) ;
3317    void (*track_die_mem_stack)(Addr  , SizeT  ) ;   3317    void (*track_die_mem_stack)(Addr  , SizeT  ) ;
3318    void (*track_ban_mem_stack)(Addr  , SizeT  ) ;   3318    void (*track_ban_mem_stack)(Addr  , SizeT  ) ;
3319    void (*track_pre_mem_read)(CorePart  , ThreadId  , Char * , Addr  , SizeT  ) ;   3319    void (*track_pre_mem_read)(CorePart  , ThreadId  , Char * , Addr  , SizeT  ) ;
3320    void (*track_pre_mem_read_asciiz)(CorePart  , ThreadId  , Char * , Addr  ) ;   3320    void (*track_pre_mem_read_asciiz)(CorePart  , ThreadId  , Char * , Addr  ) ;
3321    void (*track_pre_mem_write)(CorePart  , ThreadId  , Char * , Addr  , SizeT  ) ;   3321    void (*track_pre_mem_write)(CorePart  , ThreadId  , Char * , Addr  , SizeT  ) ;
3322    void (*track_post_mem_write)(CorePart  , ThreadId  , Addr  , SizeT  ) ;   3322    void (*track_post_mem_write)(CorePart  , ThreadId  , Addr  , SizeT  ) ;
3323    void (*track_pre_reg_read)(CorePart  , ThreadId  , Char * , PtrdiffT  ,   3323    void (*track_pre_reg_read)(CorePart  , ThreadId  , Char * , PtrdiffT  ,
3324                               SizeT  ) ;   3324                               SizeT  ) ;
3325    void (*track_post_reg_write)(CorePart  , ThreadId  , PtrdiffT  , SizeT  ) ;   3325    void (*track_post_reg_write)(CorePart  , ThreadId  , PtrdiffT  , SizeT  ) ;
3326    void (*track_post_reg_write_clientcall_return)(ThreadId  , PtrdiffT  ,   3326    void (*track_post_reg_write_clientcall_return)(ThreadId  , PtrdiffT  ,
3327                                                   SizeT  , Addr  ) ;   3327                                                   SizeT  , Addr  ) ;
3328    void (*track_start_client_code)(ThreadId  , ULong  ) ;   3328    void (*track_start_client_code)(ThreadId  , ULong  ) ;
3329    void (*track_stop_client_code)(ThreadId  , ULong  ) ;   3329    void (*track_stop_client_code)(ThreadId  , ULong  ) ;
3330    void (*track_pre_thread_ll_create)(ThreadId  , ThreadId  ) ;   3330    void (*track_pre_thread_ll_create)(ThreadId  , ThreadId  ) ;
3331    void (*track_pre_thread_first_insn)(ThreadId  ) ;   3331    void (*track_pre_thread_first_insn)(ThreadId  ) ;
3332    void (*track_pre_thread_ll_exit)(ThreadId  ) ;   3332    void (*track_pre_thread_ll_exit)(ThreadId  ) ;
3333    void (*track_pre_deliver_signal)(ThreadId  , Int sigNo , Bool  ) ;   3333    void (*track_pre_deliver_signal)(ThreadId  , Int sigNo , Bool  ) ;
3334    void (*track_post_deliver_signal)(ThreadId  , Int sigNo ) ;   3334    void (*track_post_deliver_signal)(ThreadId  , Int sigNo ) ;
3335 };   3335 };
3336 typedef struct __anonstruct_VgToolInterface_127 VgToolInterface;   3336 typedef struct __anonstruct_VgToolInterface_127 VgToolInterface;
3337 typedef UChar UByte;   3337 typedef UChar UByte;
3338 struct __anonstruct_Block_128 {   3338 struct __anonstruct_Block_128 {
3339    UByte dummy ;   3339    UByte dummy ;
3340 };   3340 };
3341 typedef struct __anonstruct_Block_128 Block;   3341 typedef struct __anonstruct_Block_128 Block;
3342 struct _Superblock {   3342 struct _Superblock {
3343    SizeT n_payload_bytes ;   3343    SizeT n_payload_bytes ;
3344    struct _Superblock *unsplittable ;   3344    struct _Superblock *unsplittable ;
3345    UByte padding[8U - (sizeof(struct _Superblock *) + sizeof(SizeT )) % 8U] ;   3345    UByte padding[8U - (sizeof(struct _Superblock *) + sizeof(SizeT )) % 8U] ;
3346    UByte payload_bytes[0] ;   3346    UByte payload_bytes[0] ;
3347 };   3347 };
3348 typedef struct _Superblock Superblock;   3348 typedef struct _Superblock Superblock;
3349 struct __anonstruct_Arena_129 {   3349 struct __anonstruct_Arena_129 {
3350    Char *name ;   3350    Char *name ;
3351    Bool clientmem ;   3351    Bool clientmem ;
3352    SizeT rz_szB ;   3352    SizeT rz_szB ;
3353    SizeT min_sblock_szB ;   3353    SizeT min_sblock_szB ;
3354    SizeT min_unsplittable_sblock_szB ;   3354    SizeT min_unsplittable_sblock_szB ;
3355    Block *freelist[112] ;   3355    Block *freelist[112] ;
3356    Superblock **sblocks ;   3356    Superblock **sblocks ;
3357    SizeT sblocks_size ;   3357    SizeT sblocks_size ;
3358    SizeT sblocks_used ;   3358    SizeT sblocks_used ;
3359    Superblock *sblocks_initial[50] ;   3359    Superblock *sblocks_initial[50] ;
3360    Superblock *deferred_reclaimed_sb ;   3360    Superblock *deferred_reclaimed_sb ;
3361    ULong stats__nreclaim_unsplit ;   3361    ULong stats__nreclaim_unsplit ;
3362    ULong stats__nreclaim_split ;   3362    ULong stats__nreclaim_split ;
3363    SizeT stats__bytes_on_loan ;   3363    SizeT stats__bytes_on_loan ;
3364    SizeT stats__bytes_mmaped ;   3364    SizeT stats__bytes_mmaped ;
3365    SizeT stats__bytes_on_loan_max ;   3365    SizeT stats__bytes_on_loan_max ;
3366    ULong stats__tot_blocks ;   3366    ULong stats__tot_blocks ;
3367    ULong stats__tot_bytes ;   3367    ULong stats__tot_bytes ;
3368    ULong stats__nsearches ;   3368    ULong stats__nsearches ;
3369    SizeT next_profile_at ;   3369    SizeT next_profile_at ;
3370    SizeT stats__bytes_mmaped_max ;   3370    SizeT stats__bytes_mmaped_max ;
3371 };   3371 };
3372 typedef struct __anonstruct_Arena_129 Arena;   3372 typedef struct __anonstruct_Arena_129 Arena;
3373 struct __anonstruct_AnCC_130 {   3373 struct __anonstruct_AnCC_130 {
3374    ULong nBytes ;   3374    ULong nBytes ;
3375    ULong nBlocks ;   3375    ULong nBlocks ;
3376    HChar *cc ;   3376    HChar *cc ;
3377 };   3377 };
3378 typedef struct __anonstruct_AnCC_130 AnCC;   3378 typedef struct __anonstruct_AnCC_130 AnCC;
3379 __inline static Bool toBool(Int x )   3379 __inline static Bool toBool(Int x )
3380 {   3380 {
3381   Int r ;   3381   Int r ;
3382   int tmp ;   3382   int tmp ;
3383     3383  
3384   {   3384   {
3385   if (x == 0) {   3385   if (x == 0) {
3386     tmp = (int )((Bool )0);   3386     tmp = (int )((Bool )0);
3387   } else {   3387   } else {
3388     tmp = (int )((Bool )1);   3388     tmp = (int )((Bool )1);
3389   }   3389   }
3390   r = tmp;   3390   r = tmp;
3391   return ((Bool )r);   3391   return ((Bool )r);
3392 }   3392 }
3393 }   3393 }
3394 __inline static UChar toUChar(Int x )   3394 __inline static UChar toUChar(Int x )
3395 {   3395 {
3396     3396  
3397     3397  
3398   {   3398   {
3399   x &= 255;   3399   x &= 255;
3400   return ((UChar )x);   3400   return ((UChar )x);
3401 }   3401 }
3402 }   3402 }
3403 __inline static HChar toHChar(Int x )   3403 __inline static HChar toHChar(Int x )
3404 {   3404 {
3405     3405  
3406     3406  
3407   {   3407   {
3408   x &= 255;   3408   x &= 255;
3409   return ((HChar )x);   3409   return ((HChar )x);
3410 }   3410 }
3411 }   3411 }
3412 __inline static UShort toUShort(Int x )   3412 __inline static UShort toUShort(Int x )
3413 {   3413 {
3414     3414  
3415     3415  
3416   {   3416   {
3417   x &= 65535;   3417   x &= 65535;
3418   return ((UShort )x);   3418   return ((UShort )x);
3419 }   3419 }
3420 }   3420 }
3421 __inline static Short toShort(Int x )   3421 __inline static Short toShort(Int x )
3422 {   3422 {
3423     3423  
3424     3424  
3425   {   3425   {
3426   x &= 65535;   3426   x &= 65535;
3427   return ((Short )x);   3427   return ((Short )x);
3428 }   3428 }
3429 }   3429 }
3430 __inline static UInt toUInt(Long x )   3430 __inline static UInt toUInt(Long x )
3431 {   3431 {
3432     3432  
3433     3433  
3434   {   3434   {
3435   x &= 4294967295LL;   3435   x &= 4294967295LL;
3436   return ((UInt )x);   3436   return ((UInt )x);
3437 }   3437 }
3438 }   3438 }
3439 __inline static ULong Ptr_to_ULong(void *p )   3439 __inline static ULong Ptr_to_ULong(void *p )
3440 {   3440 {
3441   UInt w ;   3441   UInt w ;
3442     3442  
3443   {   3443   {
3444   w = (UInt )p;   3444   w = (UInt )p;
3445   return ((ULong )w);   3445   return ((ULong )w);
3446 }   3446 }
3447 }   3447 }
3448 __inline static void *ULong_to_Ptr(ULong n )   3448 __inline static void *ULong_to_Ptr(ULong n )
3449 {   3449 {
3450   UInt w ;   3450   UInt w ;
3451     3451  
3452   {   3452   {
3453   w = (UInt )n;   3453   w = (UInt )n;
3454   return ((void *)w);   3454   return ((void *)w);
3455 }   3455 }
3456 }   3456 }
3457 __inline static Bool sr_isError(SysRes sr )   3457 __inline static Bool sr_isError(SysRes sr )
3458 {   3458 {
3459     3459  
3460     3460  
3461   {   3461   {
3462   return (sr._isError);   3462   return (sr._isError);
3463 }   3463 }
3464 }   3464 }
3465 __inline static UWord sr_Res(SysRes sr )   3465 __inline static UWord sr_Res(SysRes sr )
3466 {   3466 {
3467   UWord tmp ;   3467   UWord tmp ;
3468     3468  
3469   {   3469   {
3470   if (sr._isError) {   3470   if (sr._isError) {
3471     tmp = (UWord )0;   3471     tmp = (UWord )0;
3472   } else {   3472   } else {
3473     tmp = sr._val;   3473     tmp = sr._val;
3474   }   3474   }
3475   return (tmp);   3475   return (tmp);
3476 }   3476 }
3477 }   3477 }
3478 __inline static UWord sr_ResEx(SysRes sr )   3478 __inline static UWord sr_ResEx(SysRes sr )
3479 {   3479 {
3480   UWord tmp ;   3480   UWord tmp ;
3481     3481  
3482   {   3482   {
3483   if (sr._isError) {   3483   if (sr._isError) {
3484     tmp = (UWord )0;   3484     tmp = (UWord )0;
3485   } else {   3485   } else {
3486     tmp = sr._valEx;   3486     tmp = sr._valEx;
3487   }   3487   }
3488   return (tmp);   3488   return (tmp);
3489 }   3489 }
3490 }   3490 }
3491 __inline static UWord sr_ResHI(SysRes sr )   3491 __inline static UWord sr_ResHI(SysRes sr )
3492 {   3492 {
3493     3493  
3494     3494  
3495   {   3495   {
3496   return ((UWord )0);   3496   return ((UWord )0);
3497 }   3497 }
3498 }   3498 }
3499 __inline static UWord sr_Err(SysRes sr )   3499 __inline static UWord sr_Err(SysRes sr )
3500 {   3500 {
3501   UWord tmp ;   3501   UWord tmp ;
3502     3502  
3503   {   3503   {
3504   if (sr._isError) {   3504   if (sr._isError) {
3505     tmp = sr._val;   3505     tmp = sr._val;
3506   } else {   3506   } else {
3507     tmp = (UWord )0;   3507     tmp = (UWord )0;
3508   }   3508   }
3509   return (tmp);   3509   return (tmp);
3510 }   3510 }
3511 }   3511 }
3512 __inline static Bool sr_EQ(SysRes sr1 , SysRes sr2 )   3512 __inline static Bool sr_EQ(SysRes sr1 , SysRes sr2 )
3513 {   3513 {
3514   int tmp ;   3514   int tmp ;
3515     3515  
3516   {   3516   {
3517   if (sr1._val == sr2._val) {   3517   if (sr1._val == sr2._val) {
3518     if (sr1._isError) {   3518     if (sr1._isError) {
3519       if (sr2._isError) {   3519       if (sr2._isError) {
3520         tmp = 1;   3520         tmp = 1;
3521       } else {   3521       } else {
3522         goto _L;   3522         goto _L;
3523       }   3523       }
3524     } else   3524     } else
3525     _L: /* CIL Label */   3525     _L: /* CIL Label */
3526     if (! sr1._isError) {   3526     if (! sr1._isError) {
3527       if (! sr2._isError) {   3527       if (! sr2._isError) {
3528         tmp = 1;   3528         tmp = 1;
3529       } else {   3529       } else {
3530         tmp = 0;   3530         tmp = 0;
3531       }   3531       }
3532     } else {   3532     } else {
3533       tmp = 0;   3533       tmp = 0;
3534     }   3534     }
3535   } else {   3535   } else {
3536     tmp = 0;   3536     tmp = 0;
3537   }   3537   }
3538   return ((Bool )tmp);   3538   return ((Bool )tmp);
3539 }   3539 }
3540 }   3540 }
3541 extern void ppIRType(IRType  ) ;   3541 extern void ppIRType(IRType  ) ;
3542 extern Int sizeofIRType(IRType  ) ;   3542 extern Int sizeofIRType(IRType  ) ;
3543 extern IRConst *IRConst_U1(Bool  ) ;   3543 extern IRConst *IRConst_U1(Bool  ) ;
3544 extern IRConst *IRConst_U8(UChar  ) ;   3544 extern IRConst *IRConst_U8(UChar  ) ;
3545 extern IRConst *IRConst_U16(UShort  ) ;   3545 extern IRConst *IRConst_U16(UShort  ) ;
3546 extern IRConst *IRConst_U32(UInt  ) ;   3546 extern IRConst *IRConst_U32(UInt  ) ;
3547 extern IRConst *IRConst_U64(ULong  ) ;   3547 extern IRConst *IRConst_U64(ULong  ) ;
3548 extern IRConst *IRConst_F32(Float  ) ;   3548 extern IRConst *IRConst_F32(Float  ) ;
3549 extern IRConst *IRConst_F32i(UInt  ) ;   3549 extern IRConst *IRConst_F32i(UInt  ) ;
3550 extern IRConst *IRConst_F64(Double  ) ;   3550 extern IRConst *IRConst_F64(Double  ) ;
3551 extern IRConst *IRConst_F64i(ULong  ) ;   3551 extern IRConst *IRConst_F64i(ULong  ) ;
3552 extern IRConst *IRConst_V128(UShort  ) ;   3552 extern IRConst *IRConst_V128(UShort  ) ;
3553 extern IRConst *deepCopyIRConst(IRConst * ) ;   3553 extern IRConst *deepCopyIRConst(IRConst * ) ;
3554 extern void ppIRConst(IRConst * ) ;   3554 extern void ppIRConst(IRConst * ) ;
3555 extern Bool eqIRConst(IRConst * , IRConst * ) ;   3555 extern Bool eqIRConst(IRConst * , IRConst * ) ;
3556 extern IRCallee *mkIRCallee(Int regparms , HChar *name , void *addr ) ;   3556 extern IRCallee *mkIRCallee(Int regparms , HChar *name , void *addr ) ;
3557 extern IRCallee *deepCopyIRCallee(IRCallee * ) ;   3557 extern IRCallee *deepCopyIRCallee(IRCallee * ) ;
3558 extern void ppIRCallee(IRCallee * ) ;   3558 extern void ppIRCallee(IRCallee * ) ;
3559 extern IRRegArray *mkIRRegArray(Int  , IRType  , Int  ) ;   3559 extern IRRegArray *mkIRRegArray(Int  , IRType  , Int  ) ;
3560 extern IRRegArray *deepCopyIRRegArray(IRRegArray * ) ;   3560 extern IRRegArray *deepCopyIRRegArray(IRRegArray * ) ;
3561 extern void ppIRRegArray(IRRegArray * ) ;   3561 extern void ppIRRegArray(IRRegArray * ) ;
3562 extern Bool eqIRRegArray(IRRegArray * , IRRegArray * ) ;   3562 extern Bool eqIRRegArray(IRRegArray * , IRRegArray * ) ;
3563 extern void ppIRTemp(IRTemp  ) ;   3563 extern void ppIRTemp(IRTemp  ) ;
3564 extern void ppIROp(IROp  ) ;   3564 extern void ppIROp(IROp  ) ;
3565 extern IRExpr *IRExpr_Binder(Int binder ) ;   3565 extern IRExpr *IRExpr_Binder(Int binder ) ;
3566 extern IRExpr *IRExpr_Get(Int off , IRType ty ) ;   3566 extern IRExpr *IRExpr_Get(Int off , IRType ty ) ;
3567 extern IRExpr *IRExpr_GetI(IRRegArray *descr , IRExpr *ix , Int bias ) ;   3567 extern IRExpr *IRExpr_GetI(IRRegArray *descr , IRExpr *ix , Int bias ) ;
3568 extern IRExpr *IRExpr_RdTmp(IRTemp tmp ) ;   3568 extern IRExpr *IRExpr_RdTmp(IRTemp tmp ) ;
3569 extern IRExpr *IRExpr_Qop(IROp op , IRExpr *arg1 , IRExpr *arg2 , IRExpr *arg3 ,   3569 extern IRExpr *IRExpr_Qop(IROp op , IRExpr *arg1 , IRExpr *arg2 , IRExpr *arg3 ,
3570                           IRExpr *arg4 ) ;   3570                           IRExpr *arg4 ) ;
3571 extern IRExpr *IRExpr_Triop(IROp op , IRExpr *arg1 , IRExpr *arg2 ,   3571 extern IRExpr *IRExpr_Triop(IROp op , IRExpr *arg1 , IRExpr *arg2 ,
3572                             IRExpr *arg3 ) ;   3572                             IRExpr *arg3 ) ;
3573 extern IRExpr *IRExpr_Binop(IROp op , IRExpr *arg1 , IRExpr *arg2 ) ;   3573 extern IRExpr *IRExpr_Binop(IROp op , IRExpr *arg1 , IRExpr *arg2 ) ;
3574 extern IRExpr *IRExpr_Unop(IROp op , IRExpr *arg ) ;   3574 extern IRExpr *IRExpr_Unop(IROp op , IRExpr *arg ) ;
3575 extern IRExpr *IRExpr_Load(IREndness end , IRType ty , IRExpr *addr ) ;   3575 extern IRExpr *IRExpr_Load(IREndness end , IRType ty , IRExpr *addr ) ;
3576 extern IRExpr *IRExpr_Const(IRConst *con ) ;   3576 extern IRExpr *IRExpr_Const(IRConst *con ) ;
3577 extern IRExpr *IRExpr_CCall(IRCallee *cee , IRType retty , IRExpr **args ) ;   3577 extern IRExpr *IRExpr_CCall(IRCallee *cee , IRType retty , IRExpr **args ) ;
3578 extern IRExpr *IRExpr_Mux0X(IRExpr *cond , IRExpr *expr0 , IRExpr *exprX ) ;   3578 extern IRExpr *IRExpr_Mux0X(IRExpr *cond , IRExpr *expr0 , IRExpr *exprX ) ;
3579 extern IRExpr *deepCopyIRExpr(IRExpr * ) ;   3579 extern IRExpr *deepCopyIRExpr(IRExpr * ) ;
3580 extern void ppIRExpr(IRExpr * ) ;   3580 extern void ppIRExpr(IRExpr * ) ;
3581 extern IRExpr **mkIRExprVec_0(void) ;   3581 extern IRExpr **mkIRExprVec_0(void) ;
3582 extern IRExpr **mkIRExprVec_1(IRExpr * ) ;   3582 extern IRExpr **mkIRExprVec_1(IRExpr * ) ;
3583 extern IRExpr **mkIRExprVec_2(IRExpr * , IRExpr * ) ;   3583 extern IRExpr **mkIRExprVec_2(IRExpr * , IRExpr * ) ;
3584 extern IRExpr **mkIRExprVec_3(IRExpr * , IRExpr * , IRExpr * ) ;   3584 extern IRExpr **mkIRExprVec_3(IRExpr * , IRExpr * , IRExpr * ) ;
3585 extern IRExpr **mkIRExprVec_4(IRExpr * , IRExpr * , IRExpr * , IRExpr * ) ;   3585 extern IRExpr **mkIRExprVec_4(IRExpr * , IRExpr * , IRExpr * , IRExpr * ) ;
3586 extern IRExpr **mkIRExprVec_5(IRExpr * , IRExpr * , IRExpr * , IRExpr * ,   3586 extern IRExpr **mkIRExprVec_5(IRExpr * , IRExpr * , IRExpr * , IRExpr * ,
3587                               IRExpr * ) ;   3587                               IRExpr * ) ;
3588 extern IRExpr **mkIRExprVec_6(IRExpr * , IRExpr * , IRExpr * , IRExpr * ,   3588 extern IRExpr **mkIRExprVec_6(IRExpr * , IRExpr * , IRExpr * , IRExpr * ,
3589                               IRExpr * , IRExpr * ) ;   3589                               IRExpr * , IRExpr * ) ;
3590 extern IRExpr **mkIRExprVec_7(IRExpr * , IRExpr * , IRExpr * , IRExpr * ,   3590 extern IRExpr **mkIRExprVec_7(IRExpr * , IRExpr * , IRExpr * , IRExpr * ,
3591                               IRExpr * , IRExpr * , IRExpr * ) ;   3591                               IRExpr * , IRExpr * , IRExpr * ) ;
3592 extern IRExpr **mkIRExprVec_8(IRExpr * , IRExpr * , IRExpr * , IRExpr * ,   3592 extern IRExpr **mkIRExprVec_8(IRExpr * , IRExpr * , IRExpr * , IRExpr * ,
3593                               IRExpr * , IRExpr * , IRExpr * , IRExpr * ) ;   3593                               IRExpr * , IRExpr * , IRExpr * , IRExpr * ) ;
3594 extern IRExpr **shallowCopyIRExprVec(IRExpr ** ) ;   3594 extern IRExpr **shallowCopyIRExprVec(IRExpr ** ) ;
3595 extern IRExpr **deepCopyIRExprVec(IRExpr ** ) ;   3595 extern IRExpr **deepCopyIRExprVec(IRExpr ** ) ;
3596 extern IRExpr *mkIRExpr_HWord(HWord  ) ;   3596 extern IRExpr *mkIRExpr_HWord(HWord  ) ;
3597 extern IRExpr *mkIRExprCCall(IRType retty , Int regparms , HChar *name ,   3597 extern IRExpr *mkIRExprCCall(IRType retty , Int regparms , HChar *name ,
3598                              void *addr , IRExpr **args ) ;   3598                              void *addr , IRExpr **args ) ;
3599 __inline static Bool isIRAtom(IRExpr *e )   3599 __inline static Bool isIRAtom(IRExpr *e )
3600 {   3600 {
3601   int tmp ;   3601   int tmp ;
3602   Bool tmp___0 ;   3602   Bool tmp___0 ;
3603     3603  
3604   {   3604   {
3605   if ((unsigned int )e->tag == 86019U) {   3605   if ((unsigned int )e->tag == 86019U) {
3606     tmp = 1;   3606     tmp = 1;
3607   } else   3607   } else
3608   if ((unsigned int )e->tag == 86025U) {   3608   if ((unsigned int )e->tag == 86025U) {
3609     tmp = 1;   3609     tmp = 1;
3610   } else {   3610   } else {
3611     tmp = 0;   3611     tmp = 0;
3612   }   3612   }
3613   tmp___0 = toBool(tmp);   3613   tmp___0 = toBool(tmp);
3614   return (tmp___0);   3614   return (tmp___0);
3615 }   3615 }
3616 }   3616 }
3617 extern Bool eqIRAtom(IRExpr * , IRExpr * ) ;   3617 extern Bool eqIRAtom(IRExpr * , IRExpr * ) ;
3618 extern void ppIRJumpKind(IRJumpKind  ) ;   3618 extern void ppIRJumpKind(IRJumpKind  ) ;
3619 extern void ppIREffect(IREffect  ) ;   3619 extern void ppIREffect(IREffect  ) ;
3620 extern void ppIRDirty(IRDirty * ) ;   3620 extern void ppIRDirty(IRDirty * ) ;
3621 extern IRDirty *emptyIRDirty(void) ;   3621 extern IRDirty *emptyIRDirty(void) ;
3622 extern IRDirty *deepCopyIRDirty(IRDirty * ) ;   3622 extern IRDirty *deepCopyIRDirty(IRDirty * ) ;
3623 extern IRDirty *unsafeIRDirty_0_N(Int regparms , HChar *name , void *addr ,   3623 extern IRDirty *unsafeIRDirty_0_N(Int regparms , HChar *name , void *addr ,
3624                                   IRExpr **args ) ;   3624                                   IRExpr **args ) ;
3625 extern IRDirty *unsafeIRDirty_1_N(IRTemp dst , Int regparms , HChar *name ,   3625 extern IRDirty *unsafeIRDirty_1_N(IRTemp dst , Int regparms , HChar *name ,
3626                                   void *addr , IRExpr **args ) ;   3626                                   void *addr , IRExpr **args ) ;
3627 extern void ppIRMBusEvent(IRMBusEvent  ) ;   3627 extern void ppIRMBusEvent(IRMBusEvent  ) ;
3628 extern void ppIRCAS(IRCAS *cas ) ;   3628 extern void ppIRCAS(IRCAS *cas ) ;
3629 extern IRCAS *mkIRCAS(IRTemp oldHi , IRTemp oldLo , IREndness end ,   3629 extern IRCAS *mkIRCAS(IRTemp oldHi , IRTemp oldLo , IREndness end ,
3630                       IRExpr *addr , IRExpr *expdHi , IRExpr *expdLo ,   3630                       IRExpr *addr , IRExpr *expdHi , IRExpr *expdLo ,
3631                       IRExpr *dataHi , IRExpr *dataLo ) ;   3631                       IRExpr *dataHi , IRExpr *dataLo ) ;
3632 extern IRCAS *deepCopyIRCAS(IRCAS * ) ;   3632 extern IRCAS *deepCopyIRCAS(IRCAS * ) ;
3633 extern void ppIRPutI(IRPutI *puti ) ;   3633 extern void ppIRPutI(IRPutI *puti ) ;
3634 extern IRPutI *mkIRPutI(IRRegArray *descr , IRExpr *ix , Int bias ,   3634 extern IRPutI *mkIRPutI(IRRegArray *descr , IRExpr *ix , Int bias ,
3635                         IRExpr *data ) ;   3635                         IRExpr *data ) ;
3636 extern IRPutI *deepCopyIRPutI(IRPutI * ) ;   3636 extern IRPutI *deepCopyIRPutI(IRPutI * ) ;
3637 extern IRStmt *IRStmt_NoOp(void) ;   3637 extern IRStmt *IRStmt_NoOp(void) ;
3638 extern IRStmt *IRStmt_IMark(Addr64 addr , Int len , UChar delta ) ;   3638 extern IRStmt *IRStmt_IMark(Addr64 addr , Int len , UChar delta ) ;
3639 extern IRStmt *IRStmt_AbiHint(IRExpr *base , Int len , IRExpr *nia ) ;   3639 extern IRStmt *IRStmt_AbiHint(IRExpr *base , Int len , IRExpr *nia ) ;
3640 extern IRStmt *IRStmt_Put(Int off , IRExpr *data ) ;   3640 extern IRStmt *IRStmt_Put(Int off , IRExpr *data ) ;
3641 extern IRStmt *IRStmt_PutI(IRPutI *details ) ;   3641 extern IRStmt *IRStmt_PutI(IRPutI *details ) ;
3642 extern IRStmt *IRStmt_WrTmp(IRTemp tmp , IRExpr *data ) ;   3642 extern IRStmt *IRStmt_WrTmp(IRTemp tmp , IRExpr *data ) ;
3643 extern IRStmt *IRStmt_Store(IREndness end , IRExpr *addr , IRExpr *data ) ;   3643 extern IRStmt *IRStmt_Store(IREndness end , IRExpr *addr , IRExpr *data ) ;
3644 extern IRStmt *IRStmt_CAS(IRCAS *details ) ;   3644 extern IRStmt *IRStmt_CAS(IRCAS *details ) ;
3645 extern IRStmt *IRStmt_LLSC(IREndness end , IRTemp result , IRExpr *addr ,   3645 extern IRStmt *IRStmt_LLSC(IREndness end , IRTemp result , IRExpr *addr ,
3646                            IRExpr *storedata ) ;   3646                            IRExpr *storedata ) ;
3647 extern IRStmt *IRStmt_Dirty(IRDirty *details ) ;   3647 extern IRStmt *IRStmt_Dirty(IRDirty *details ) ;
3648 extern IRStmt *IRStmt_MBE(IRMBusEvent event ) ;   3648 extern IRStmt *IRStmt_MBE(IRMBusEvent event ) ;
3649 extern IRStmt *IRStmt_Exit(IRExpr *guard , IRJumpKind jk , IRConst *dst ,   3649 extern IRStmt *IRStmt_Exit(IRExpr *guard , IRJumpKind jk , IRConst *dst ,
3650                            Int offsIP ) ;   3650                            Int offsIP ) ;
3651 extern IRStmt *deepCopyIRStmt(IRStmt * ) ;   3651 extern IRStmt *deepCopyIRStmt(IRStmt * ) ;
3652 extern void ppIRStmt(IRStmt * ) ;   3652 extern void ppIRStmt(IRStmt * ) ;
3653 extern IRTemp newIRTemp(IRTypeEnv * , IRType  ) ;   3653 extern IRTemp newIRTemp(IRTypeEnv * , IRType  ) ;
3654 extern IRTypeEnv *deepCopyIRTypeEnv(IRTypeEnv * ) ;   3654 extern IRTypeEnv *deepCopyIRTypeEnv(IRTypeEnv * ) ;
3655 extern void ppIRTypeEnv(IRTypeEnv * ) ;   3655 extern void ppIRTypeEnv(IRTypeEnv * ) ;
3656 extern IRSB *emptyIRSB(void) ;   3656 extern IRSB *emptyIRSB(void) ;
3657 extern IRSB *deepCopyIRSB(IRSB * ) ;   3657 extern IRSB *deepCopyIRSB(IRSB * ) ;
3658 extern IRSB *deepCopyIRSBExceptStmts(IRSB * ) ;   3658 extern IRSB *deepCopyIRSBExceptStmts(IRSB * ) ;
3659 extern void ppIRSB(IRSB * ) ;   3659 extern void ppIRSB(IRSB * ) ;
3660 extern void addStmtToIRSB(IRSB * , IRStmt * ) ;   3660 extern void addStmtToIRSB(IRSB * , IRStmt * ) ;
3661 extern IRTypeEnv *emptyIRTypeEnv(void) ;   3661 extern IRTypeEnv *emptyIRTypeEnv(void) ;
3662 extern IRType typeOfIRConst(IRConst * ) ;   3662 extern IRType typeOfIRConst(IRConst * ) ;
3663 extern IRType typeOfIRTemp(IRTypeEnv * , IRTemp  ) ;   3663 extern IRType typeOfIRTemp(IRTypeEnv * , IRTemp  ) ;
3664 extern IRType typeOfIRExpr(IRTypeEnv * , IRExpr * ) ;   3664 extern IRType typeOfIRExpr(IRTypeEnv * , IRExpr * ) ;
3665 extern void sanityCheckIRSB(IRSB *bb , HChar *caller , Bool require_flatness ,   3665 extern void sanityCheckIRSB(IRSB *bb , HChar *caller , Bool require_flatness ,
3666                             IRType guest_word_size ) ;   3666                             IRType guest_word_size ) ;
3667 extern Bool isFlatIRStmt(IRStmt * ) ;   3667 extern Bool isFlatIRStmt(IRStmt * ) ;
3668 extern Bool isPlausibleIRType(IRType ty ) ;   3668 extern Bool isPlausibleIRType(IRType ty ) ;
3669 extern HChar const   *LibVEX_ppVexArch(VexArch  ) ;   3669 extern HChar const   *LibVEX_ppVexArch(VexArch  ) ;
3670 extern HChar const   *LibVEX_ppVexHwCaps(VexArch  , UInt  ) ;   3670 extern HChar const   *LibVEX_ppVexHwCaps(VexArch  , UInt  ) ;
3671 extern void LibVEX_default_VexArchInfo(VexArchInfo *vai ) ;   3671 extern void LibVEX_default_VexArchInfo(VexArchInfo *vai ) ;
3672 extern void LibVEX_default_VexAbiInfo(VexAbiInfo *vbi ) ;   3672 extern void LibVEX_default_VexAbiInfo(VexAbiInfo *vbi ) ;
3673 extern void LibVEX_default_VexControl(VexControl *vcon ) ;   3673 extern void LibVEX_default_VexControl(VexControl *vcon ) ;
3674 extern HChar *private_LibVEX_alloc_first ;   3674 extern HChar *private_LibVEX_alloc_first ;
3675 extern HChar *private_LibVEX_alloc_curr ;   3675 extern HChar *private_LibVEX_alloc_curr ;
3676 extern HChar *private_LibVEX_alloc_last ;   3676 extern HChar *private_LibVEX_alloc_last ;
3677 extern  __attribute__((__noreturn__)) void private_LibVEX_alloc_OOM(void) ;   3677 extern  __attribute__((__noreturn__)) void private_LibVEX_alloc_OOM(void) ;
3678 __inline static void *LibVEX_Alloc(Int nbytes )   3678 __inline static void *LibVEX_Alloc(Int nbytes )
3679 {   3679 {
3680   HChar *curr ;   3680   HChar *curr ;
3681   HChar *next ;   3681   HChar *next ;
3682   Int ALIGN ;   3682   Int ALIGN ;
3683     3683  
3684   {   3684   {
3685   ALIGN = (Int )((HWord )(& ((struct align *)0)->x)) - 1;   3685   ALIGN = (Int )((HWord )(& ((struct align *)0)->x)) - 1;
3686   nbytes = (nbytes + ALIGN) & ~ ALIGN;   3686   nbytes = (nbytes + ALIGN) & ~ ALIGN;
3687   curr = private_LibVEX_alloc_curr;   3687   curr = private_LibVEX_alloc_curr;
3688   next = curr + nbytes;   3688   next = curr + nbytes;
3689   if ((unsigned int )next >= (unsigned int )private_LibVEX_alloc_last) {   3689   if ((unsigned int )next >= (unsigned int )private_LibVEX_alloc_last) {
3690     private_LibVEX_alloc_OOM();   3690     private_LibVEX_alloc_OOM();
3691   } else {   3691   } else {
3692     3692  
3693   }   3693   }
3694   private_LibVEX_alloc_curr = next;   3694   private_LibVEX_alloc_curr = next;
3695   return ((void *)curr);   3695   return ((void *)curr);
3696 }   3696 }
3697 }   3697 }
3698 extern void LibVEX_ShowAllocStats(void) ;   3698 extern void LibVEX_ShowAllocStats(void) ;
3699 extern void LibVEX_Init( __attribute__((__noreturn__)) void (*failure_exit)(void) ,   3699 extern void LibVEX_Init( __attribute__((__noreturn__)) void (*failure_exit)(void) ,
3700                         void (*log_bytes)(HChar * , Int nbytes ) ,   3700                         void (*log_bytes)(HChar * , Int nbytes ) ,
3701                         Int debuglevel , Bool valgrind_support ,   3701                         Int debuglevel , Bool valgrind_support ,
3702                         VexControl *vcon ) ;   3702                         VexControl *vcon ) ;
3703 extern VexTranslateResult LibVEX_Translate(VexTranslateArgs * ) ;   3703 extern VexTranslateResult LibVEX_Translate(VexTranslateArgs * ) ;
3704 extern VexInvalRange LibVEX_Chain(VexArch arch_host , void *place_to_chain ,   3704 extern VexInvalRange LibVEX_Chain(VexArch arch_host , void *place_to_chain ,
3705                                   void *disp_cp_chain_me_EXPECTED ,   3705                                   void *disp_cp_chain_me_EXPECTED ,
3706                                   void *place_to_jump_to ) ;   3706                                   void *place_to_jump_to ) ;
3707 extern VexInvalRange LibVEX_UnChain(VexArch arch_host , void *place_to_unchain ,   3707 extern VexInvalRange LibVEX_UnChain(VexArch arch_host , void *place_to_unchain ,
3708                                     void *place_to_jump_to_EXPECTED ,   3708                                     void *place_to_jump_to_EXPECTED ,
3709                                     void *disp_cp_chain_me ) ;   3709                                     void *disp_cp_chain_me ) ;
3710 extern Int LibVEX_evCheckSzB(VexArch arch_host ) ;   3710 extern Int LibVEX_evCheckSzB(VexArch arch_host ) ;
3711 extern VexInvalRange LibVEX_PatchProfInc(VexArch arch_host ,   3711 extern VexInvalRange LibVEX_PatchProfInc(VexArch arch_host ,
3712                                          void *place_to_patch ,   3712                                          void *place_to_patch ,
3713                                          ULong *location_of_counter ) ;   3713                                          ULong *location_of_counter ) ;
3714 extern void LibVEX_ShowStats(void) ;   3714 extern void LibVEX_ShowStats(void) ;
3715 extern HChar *LibVEX_EmWarn_string(VexEmWarn  ) ;   3715 extern HChar *LibVEX_EmWarn_string(VexEmWarn  ) ;
3716 extern void LibVEX_GuestX86_initialise(VexGuestX86State *vex_state ) ;   3716 extern void LibVEX_GuestX86_initialise(VexGuestX86State *vex_state ) ;
3717 extern UInt LibVEX_GuestX86_get_eflags(VexGuestX86State *vex_state ) ;   3717 extern UInt LibVEX_GuestX86_get_eflags(VexGuestX86State *vex_state ) ;
3718 extern void LibVEX_GuestX86_put_eflag_c(UInt new_carry_flag ,   3718 extern void LibVEX_GuestX86_put_eflag_c(UInt new_carry_flag ,
3719                                         VexGuestX86State *vex_state ) ;   3719                                         VexGuestX86State *vex_state ) ;
3720 __inline static struct vki_cmsghdr *__vki_cmsg_nxthdr(void *__ctl ,   3720 __inline static struct vki_cmsghdr *__vki_cmsg_nxthdr(void *__ctl ,
3721                                                       __vki_kernel_size_t __size ,   3721                                                       __vki_kernel_size_t __size ,
3722                                                       struct vki_cmsghdr *__cmsg )   3722                                                       struct vki_cmsghdr *__cmsg )
3723 {   3723 {
3724   struct vki_cmsghdr *__ptr ;   3724   struct vki_cmsghdr *__ptr ;
3725     3725  
3726   {   3726   {
3727   __ptr = (struct vki_cmsghdr *)((unsigned char *)__cmsg + (((__cmsg->cmsg_len + sizeof(long )) - 1U) & ~ (sizeof(long ) - 1U)));   3727   __ptr = (struct vki_cmsghdr *)((unsigned char *)__cmsg + (((__cmsg->cmsg_len + sizeof(long )) - 1U) & ~ (sizeof(long ) - 1U)));
3728   if ((unsigned long )((char *)(__ptr + 1) - (char *)__ctl) > (unsigned long )__size) {   3728   if ((unsigned long )((char *)(__ptr + 1) - (char *)__ctl) > (unsigned long )__size) {
3729     return ((struct vki_cmsghdr *)0);   3729     return ((struct vki_cmsghdr *)0);
3730   } else {   3730   } else {
3731     3731  
3732   }   3732   }
3733   return (__ptr);   3733   return (__ptr);
3734 }   3734 }
3735 }   3735 }
3736 __inline static struct vki_cmsghdr *vki_cmsg_nxthdr(struct vki_msghdr *__msg ,   3736 __inline static struct vki_cmsghdr *vki_cmsg_nxthdr(struct vki_msghdr *__msg ,
3737                                                     struct vki_cmsghdr *__cmsg )   3737                                                     struct vki_cmsghdr *__cmsg )
3738 {   3738 {
3739   struct vki_cmsghdr *tmp ;   3739   struct vki_cmsghdr *tmp ;
3740     3740  
3741   {   3741   {
3742   tmp = __vki_cmsg_nxthdr(__msg->msg_control, __msg->msg_controllen, __cmsg);   3742   tmp = __vki_cmsg_nxthdr(__msg->msg_control, __msg->msg_controllen, __cmsg);
3743   return (tmp);   3743   return (tmp);
3744 }   3744 }
3745 }   3745 }
3746 extern void vgPlain_vki_do_initial_consistency_checks(void) ;   3746 extern void vgPlain_vki_do_initial_consistency_checks(void) ;
3747 extern void vgPlain_debugLog_startup(Int level , HChar *who ) ;   3747 extern void vgPlain_debugLog_startup(Int level , HChar *who ) ;
3748 extern void vgPlain_debugLog_setXml(Bool xml ) ;   3748 extern void vgPlain_debugLog_setXml(Bool xml ) ;
3749 extern Int vgPlain_debugLog_getLevel(void) ;   3749 extern Int vgPlain_debugLog_getLevel(void) ;
3750 extern void ( /* format attribute */  vgPlain_debugLog)(Int level ,   3750 extern void ( /* format attribute */  vgPlain_debugLog)(Int level ,
3751                                                         HChar const   *modulename ,   3751                                                         HChar const   *modulename ,
3752                                                         HChar const   *format   3752                                                         HChar const   *format
3753                                                         , ...) ;   3753                                                         , ...) ;
3754 extern UInt vgPlain_debugLog_vprintf(void (*send_fn)(HChar  , void * ) ,   3754 extern UInt vgPlain_debugLog_vprintf(void (*send_fn)(HChar  , void * ) ,
3755                                      void *send_arg2 , HChar const   *format ,   3755                                      void *send_arg2 , HChar const   *format ,
3756                                      va_list vargs ) ;   3756                                      va_list vargs ) ;
3757 extern Bool vgPlain_isspace(Char c ) ;   3757 extern Bool vgPlain_isspace(Char c ) ;
3758 extern Bool vgPlain_isdigit(Char c ) ;   3758 extern Bool vgPlain_isdigit(Char c ) ;
3759 extern Char vgPlain_tolower(Char c ) ;   3759 extern Char vgPlain_tolower(Char c ) ;
3760 extern Long vgPlain_strtoll10(Char *str , Char **endptr ) ;   3760 extern Long vgPlain_strtoll10(Char *str , Char **endptr ) ;
3761 extern Long vgPlain_strtoll16(Char *str , Char **endptr ) ;   3761 extern Long vgPlain_strtoll16(Char *str , Char **endptr ) ;
3762 extern ULong vgPlain_strtoull10(Char *str , Char **endptr ) ;   3762 extern ULong vgPlain_strtoull10(Char *str , Char **endptr ) ;
3763 extern ULong vgPlain_strtoull16(Char *str , Char **endptr ) ;   3763 extern ULong vgPlain_strtoull16(Char *str , Char **endptr ) ;
3764 extern double vgPlain_strtod(Char *str , Char **endptr ) ;   3764 extern double vgPlain_strtod(Char *str , Char **endptr ) ;
3765 extern SizeT vgPlain_strlen(Char const   *str ) ;   3765 extern SizeT vgPlain_strlen(Char const   *str ) ;
3766 extern Char *vgPlain_strcat(Char *dest , Char const   *src ) ;   3766 extern Char *vgPlain_strcat(Char *dest , Char const   *src ) ;
3767 extern Char *vgPlain_strncat(Char *dest , Char const   *src , SizeT n ) ;   3767 extern Char *vgPlain_strncat(Char *dest , Char const   *src , SizeT n ) ;
3768 extern Char *vgPlain_strpbrk(Char const   *s , Char const   *accpt ) ;   3768 extern Char *vgPlain_strpbrk(Char const   *s , Char const   *accpt ) ;
3769 extern Char *vgPlain_strcpy(Char *dest , Char const   *src ) ;   3769 extern Char *vgPlain_strcpy(Char *dest , Char const   *src ) ;
3770 extern Char *vgPlain_strncpy(Char *dest , Char const   *src , SizeT ndest ) ;   3770 extern Char *vgPlain_strncpy(Char *dest , Char const   *src , SizeT ndest ) ;
3771 extern Int vgPlain_strcmp(Char const   *s1 , Char const   *s2 ) ;   3771 extern Int vgPlain_strcmp(Char const   *s1 , Char const   *s2 ) ;
3772 extern Int vgPlain_strcasecmp(Char const   *s1 , Char const   *s2 ) ;   3772 extern Int vgPlain_strcasecmp(Char const   *s1 , Char const   *s2 ) ;
3773 extern Int vgPlain_strncmp(Char const   *s1 , Char const   *s2 , SizeT nmax ) ;   3773 extern Int vgPlain_strncmp(Char const   *s1 , Char const   *s2 , SizeT nmax ) ;
3774 extern Int vgPlain_strncasecmp(Char const   *s1 , Char const   *s2 , SizeT nmax ) ;   3774 extern Int vgPlain_strncasecmp(Char const   *s1 , Char const   *s2 , SizeT nmax ) ;
3775 extern Char *vgPlain_strstr(Char const   *haystack , Char *needle ) ;   3775 extern Char *vgPlain_strstr(Char const   *haystack , Char *needle ) ;
3776 extern Char *vgPlain_strcasestr(Char const   *haystack , Char *needle ) ;   3776 extern Char *vgPlain_strcasestr(Char const   *haystack , Char *needle ) ;
3777 extern Char *vgPlain_strchr(Char const   *s , Char c ) ;   3777 extern Char *vgPlain_strchr(Char const   *s , Char c ) ;
3778 extern Char *vgPlain_strrchr(Char const   *s , Char c ) ;   3778 extern Char *vgPlain_strrchr(Char const   *s , Char c ) ;
3779 extern SizeT vgPlain_strspn(Char const   *s , Char const   *accpt ) ;   3779 extern SizeT vgPlain_strspn(Char const   *s , Char const   *accpt ) ;
3780 extern SizeT vgPlain_strcspn(Char const   *s , char const   *reject ) ;   3780 extern SizeT vgPlain_strcspn(Char const   *s , char const   *reject ) ;
3781 extern Char *vgPlain_strtok_r(Char *s , Char const   *delim , Char **saveptr ) ;   3781 extern Char *vgPlain_strtok_r(Char *s , Char const   *delim , Char **saveptr ) ;
3782 extern Char *vgPlain_strtok(Char *s , Char const   *delim ) ;   3782 extern Char *vgPlain_strtok(Char *s , Char const   *delim ) ;
3783 extern Bool vgPlain_parse_Addr(UChar **ppc , Addr *result ) ;   3783 extern Bool vgPlain_parse_Addr(UChar **ppc , Addr *result ) ;
3784 extern void vgPlain_strncpy_safely(Char *dest , Char const   *src , SizeT ndest ) ;   3784 extern void vgPlain_strncpy_safely(Char *dest , Char const   *src , SizeT ndest ) ;
3785 extern void *vgPlain_memcpy(void *d , void const   *s , SizeT sz ) ;   3785 extern void *vgPlain_memcpy(void *d , void const   *s , SizeT sz ) ;
3786 extern void *vgPlain_memmove(void *d , void const   *s , SizeT sz ) ;   3786 extern void *vgPlain_memmove(void *d , void const   *s , SizeT sz ) ;
3787 extern void *vgPlain_memset(void *s , Int c , SizeT sz ) ;   3787 extern void *vgPlain_memset(void *s , Int c , SizeT sz ) ;
3788 extern Int vgPlain_memcmp(void const   *s1 , void const   *s2 , SizeT n ) ;   3788 extern Int vgPlain_memcmp(void const   *s1 , void const   *s2 , SizeT n ) ;
3789 __inline static void ( __attribute__((__always_inline__)) vgPlain_bzero_inline)(void *s ,   3789 __inline static void ( __attribute__((__always_inline__)) vgPlain_bzero_inline)(void *s ,
3790                                                                                 SizeT sz )   3790                                                                                 SizeT sz )
3791 {   3791 {
3792   UWord *p ;   3792   UWord *p ;
3793   UWord tmp ;   3793   UWord tmp ;
3794   UWord tmp___0 ;   3794   UWord tmp___0 ;
3795   UWord tmp___1 ;   3795   UWord tmp___1 ;
3796   UWord tmp___2 ;   3796   UWord tmp___2 ;
3797   UWord tmp___3 ;   3797   UWord tmp___3 ;
3798   UWord tmp___4 ;   3798   UWord tmp___4 ;
3799   UWord tmp___5 ;   3799   UWord tmp___5 ;
3800   UWord tmp___6 ;   3800   UWord tmp___6 ;
3801   UWord tmp___7 ;   3801   UWord tmp___7 ;
3802   UWord tmp___8 ;   3802   UWord tmp___8 ;
3803   UWord tmp___9 ;   3803   UWord tmp___9 ;
3804   UWord tmp___10 ;   3804   UWord tmp___10 ;
3805   UWord tmp___11 ;   3805   UWord tmp___11 ;
3806   UWord tmp___12 ;   3806   UWord tmp___12 ;
3807   UWord tmp___13 ;   3807   UWord tmp___13 ;
3808   UWord tmp___14 ;   3808   UWord tmp___14 ;
3809   UWord tmp___15 ;   3809   UWord tmp___15 ;
3810   UWord tmp___16 ;   3810   UWord tmp___16 ;
3811   UWord tmp___17 ;   3811   UWord tmp___17 ;
3812   UWord tmp___18 ;   3812   UWord tmp___18 ;
3813   UWord tmp___19 ;   3813   UWord tmp___19 ;
3814   UWord tmp___20 ;   3814   UWord tmp___20 ;
3815   UWord tmp___21 ;   3815   UWord tmp___21 ;
3816   UWord tmp___22 ;   3816   UWord tmp___22 ;
3817   UWord tmp___23 ;   3817   UWord tmp___23 ;
3818   UWord tmp___24 ;   3818   UWord tmp___24 ;
3819   UWord tmp___25 ;   3819   UWord tmp___25 ;
3820   UWord tmp___26 ;   3820   UWord tmp___26 ;
3821   long tmp___27 ;   3821   long tmp___27 ;
3822   long tmp___28 ;   3822   long tmp___28 ;
3823     3823  
3824   {   3824   {
3825   tmp___27 = __builtin_expect((long )(! (! (0UL == (sz & (Addr )(sizeof(UWord ) - 1U))))),   3825   tmp___27 = __builtin_expect((long )(! (! (0UL == (sz & (Addr )(sizeof(UWord ) - 1U))))),
3826                               1L);   3826                               1L);
3827   if (tmp___27) {   3827   if (tmp___27) {
3828     tmp___28 = __builtin_expect((long )(! (! (0UL == ((Addr )s & (Addr )(sizeof(UWord ) - 1U))))),   3828     tmp___28 = __builtin_expect((long )(! (! (0UL == ((Addr )s & (Addr )(sizeof(UWord ) - 1U))))),
3829                                 1L);   3829                                 1L);
3830     if (tmp___28) {   3830     if (tmp___28) {
3831       p = (UWord *)s;   3831       p = (UWord *)s;
3832       switch (sz / (SizeT )sizeof(UWord )) {   3832       switch (sz / (SizeT )sizeof(UWord )) {
3833       case 8UL:   3833       case 8UL:
3834       tmp___5 = 0UL;   3834       tmp___5 = 0UL;
3835       *(p + 7) = tmp___5;   3835       *(p + 7) = tmp___5;
3836       tmp___4 = tmp___5;   3836       tmp___4 = tmp___5;
3837       *(p + 6) = tmp___4;   3837       *(p + 6) = tmp___4;
3838       tmp___3 = tmp___4;   3838       tmp___3 = tmp___4;
3839       *(p + 5) = tmp___3;   3839       *(p + 5) = tmp___3;
3840       tmp___2 = tmp___3;   3840       tmp___2 = tmp___3;
3841       *(p + 4) = tmp___2;   3841       *(p + 4) = tmp___2;
3842       tmp___1 = tmp___2;   3842       tmp___1 = tmp___2;
3843       *(p + 3) = tmp___1;   3843       *(p + 3) = tmp___1;
3844       tmp___0 = tmp___1;   3844       tmp___0 = tmp___1;
3845       *(p + 2) = tmp___0;   3845       *(p + 2) = tmp___0;
3846       tmp = tmp___0;   3846       tmp = tmp___0;
3847       *(p + 1) = tmp;   3847       *(p + 1) = tmp;
3848       *(p + 0) = tmp;   3848       *(p + 0) = tmp;
3849       return;   3849       return;
3850       case 7UL:   3850       case 7UL:
3851       tmp___11 = 0UL;   3851       tmp___11 = 0UL;
3852       *(p + 6) = tmp___11;   3852       *(p + 6) = tmp___11;
3853       tmp___10 = tmp___11;   3853       tmp___10 = tmp___11;
3854       *(p + 5) = tmp___10;   3854       *(p + 5) = tmp___10;
3855       tmp___9 = tmp___10;   3855       tmp___9 = tmp___10;
3856       *(p + 4) = tmp___9;   3856       *(p + 4) = tmp___9;
3857       tmp___8 = tmp___9;   3857       tmp___8 = tmp___9;
3858       *(p + 3) = tmp___8;   3858       *(p + 3) = tmp___8;
3859       tmp___7 = tmp___8;   3859       tmp___7 = tmp___8;
3860       *(p + 2) = tmp___7;   3860       *(p + 2) = tmp___7;
3861       tmp___6 = tmp___7;   3861       tmp___6 = tmp___7;
3862       *(p + 1) = tmp___6;   3862       *(p + 1) = tmp___6;
3863       *(p + 0) = tmp___6;   3863       *(p + 0) = tmp___6;
3864       return;   3864       return;
3865       case 6UL:   3865       case 6UL:
3866       tmp___16 = 0UL;   3866       tmp___16 = 0UL;
3867       *(p + 5) = tmp___16;   3867       *(p + 5) = tmp___16;
3868       tmp___15 = tmp___16;   3868       tmp___15 = tmp___16;
3869       *(p + 4) = tmp___15;   3869       *(p + 4) = tmp___15;
3870       tmp___14 = tmp___15;   3870       tmp___14 = tmp___15;
3871       *(p + 3) = tmp___14;   3871       *(p + 3) = tmp___14;
3872       tmp___13 = tmp___14;   3872       tmp___13 = tmp___14;
3873       *(p + 2) = tmp___13;   3873       *(p + 2) = tmp___13;
3874       tmp___12 = tmp___13;   3874       tmp___12 = tmp___13;
3875       *(p + 1) = tmp___12;   3875       *(p + 1) = tmp___12;
3876       *(p + 0) = tmp___12;   3876       *(p + 0) = tmp___12;
3877       return;   3877       return;
3878       case 5UL:   3878       case 5UL:
3879       tmp___20 = 0UL;   3879       tmp___20 = 0UL;
3880       *(p + 4) = tmp___20;   3880       *(p + 4) = tmp___20;
3881       tmp___19 = tmp___20;   3881       tmp___19 = tmp___20;
3882       *(p + 3) = tmp___19;   3882       *(p + 3) = tmp___19;
3883       tmp___18 = tmp___19;   3883       tmp___18 = tmp___19;
3884       *(p + 2) = tmp___18;   3884       *(p + 2) = tmp___18;
3885       tmp___17 = tmp___18;   3885       tmp___17 = tmp___18;
3886       *(p + 1) = tmp___17;   3886       *(p + 1) = tmp___17;
3887       *(p + 0) = tmp___17;   3887       *(p + 0) = tmp___17;
3888       return;   3888       return;
3889       case 4UL:   3889       case 4UL:
3890       tmp___23 = 0UL;   3890       tmp___23 = 0UL;
3891       *(p + 3) = tmp___23;   3891       *(p + 3) = tmp___23;
3892       tmp___22 = tmp___23;   3892       tmp___22 = tmp___23;
3893       *(p + 2) = tmp___22;   3893       *(p + 2) = tmp___22;
3894       tmp___21 = tmp___22;   3894       tmp___21 = tmp___22;
3895       *(p + 1) = tmp___21;   3895       *(p + 1) = tmp___21;
3896       *(p + 0) = tmp___21;   3896       *(p + 0) = tmp___21;
3897       return;   3897       return;
3898       case 3UL:   3898       case 3UL:
3899       tmp___25 = 0UL;   3899       tmp___25 = 0UL;
3900       *(p + 2) = tmp___25;   3900       *(p + 2) = tmp___25;
3901       tmp___24 = tmp___25;   3901       tmp___24 = tmp___25;
3902       *(p + 1) = tmp___24;   3902       *(p + 1) = tmp___24;
3903       *(p + 0) = tmp___24;   3903       *(p + 0) = tmp___24;
3904       return;   3904       return;
3905       case 2UL:   3905       case 2UL:
3906       tmp___26 = 0UL;   3906       tmp___26 = 0UL;
3907       *(p + 1) = tmp___26;   3907       *(p + 1) = tmp___26;
3908       *(p + 0) = tmp___26;   3908       *(p + 0) = tmp___26;
3909       return;   3909       return;
3910       case 1UL:   3910       case 1UL:
3911       *(p + 0) = 0UL;   3911       *(p + 0) = 0UL;
3912       return;   3912       return;
3913       case 0UL:   3913       case 0UL:
3914       return;   3914       return;
3915       default:   3915       default:
3916       break;   3916       break;
3917       }   3917       }
3918     } else {   3918     } else {
3919     3919  
3920     }   3920     }
3921   } else {   3921   } else {
3922     3922  
3923   }   3923   }
3924   vgPlain_memset(s, 0, sz);   3924   vgPlain_memset(s, 0, sz);
3925   return;   3925   return;
3926 }   3926 }
3927 }   3927 }
3928 extern void vgPlain_ssort(void *base , SizeT nmemb , SizeT size ,   3928 extern void vgPlain_ssort(void *base , SizeT nmemb , SizeT size ,
3929                           Int (*compar)(void * , void * ) ) ;   3929                           Int (*compar)(void * , void * ) ) ;
3930 extern Int vgPlain_log2(UInt x ) ;   3930 extern Int vgPlain_log2(UInt x ) ;
3931 extern Int vgPlain_log2_64(ULong x ) ;   3931 extern Int vgPlain_log2_64(ULong x ) ;
3932 extern UInt vgPlain_random(UInt *pSeed ) ;   3932 extern UInt vgPlain_random(UInt *pSeed ) ;
3933 extern Int vgPlain_am_get_segment_starts(Addr *starts , Int nStarts ) ;   3933 extern Int vgPlain_am_get_segment_starts(Addr *starts , Int nStarts ) ;
3934 extern NSegment const   *vgPlain_am_find_nsegment(Addr a ) ;   3934 extern NSegment const   *vgPlain_am_find_nsegment(Addr a ) ;
3935 extern HChar *vgPlain_am_get_filename(NSegment const   * ) ;   3935 extern HChar *vgPlain_am_get_filename(NSegment const   * ) ;
3936 extern Bool vgPlain_am_is_valid_for_client(Addr start , SizeT len , UInt prot ) ;   3936 extern Bool vgPlain_am_is_valid_for_client(Addr start , SizeT len , UInt prot ) ;
3937 extern void *vgPlain_am_shadow_alloc(SizeT size ) ;   3937 extern void *vgPlain_am_shadow_alloc(SizeT size ) ;
3938 extern SysRes vgPlain_am_munmap_valgrind(Addr start , SizeT length ) ;   3938 extern SysRes vgPlain_am_munmap_valgrind(Addr start , SizeT length ) ;
3939 extern Addr vgPlain_am_startup(Addr sp_at_startup ) ;   3939 extern Addr vgPlain_am_startup(Addr sp_at_startup ) ;
3940 extern NSegment const   *vgPlain_am_next_nsegment(NSegment *here , Bool fwds ) ;   3940 extern NSegment const   *vgPlain_am_next_nsegment(NSegment *here , Bool fwds ) ;
3941 extern Bool vgPlain_am_is_valid_for_client_or_free_or_resvn(Addr start ,   3941 extern Bool vgPlain_am_is_valid_for_client_or_free_or_resvn(Addr start ,
3942                                                             SizeT len ,   3942                                                             SizeT len ,
3943                                                             UInt prot ) ;   3943                                                             UInt prot ) ;
3944 extern ULong vgPlain_am_get_anonsize_total(void) ;   3944 extern ULong vgPlain_am_get_anonsize_total(void) ;
3945 extern void vgPlain_am_show_nsegments(Int logLevel , HChar *who ) ;   3945 extern void vgPlain_am_show_nsegments(Int logLevel , HChar *who ) ;
3946 extern Bool vgPlain_am_do_sync_check(HChar const   *fn , HChar const   *file ,   3946 extern Bool vgPlain_am_do_sync_check(HChar const   *fn , HChar const   *file ,
3947                                      Int line ) ;   3947                                      Int line ) ;
3948 extern Addr vgPlain_am_get_advisory(MapRequest *req , Bool forClient , Bool *ok ) ;   3948 extern Addr vgPlain_am_get_advisory(MapRequest *req , Bool forClient , Bool *ok ) ;
3949 extern Addr vgPlain_am_get_advisory_client_simple(Addr start , SizeT len ,   3949 extern Addr vgPlain_am_get_advisory_client_simple(Addr start , SizeT len ,
3950                                                   Bool *ok ) ;   3950                                                   Bool *ok ) ;
3951 extern Bool vgPlain_am_covered_by_single_free_segment(Addr start , SizeT len ) ;   3951 extern Bool vgPlain_am_covered_by_single_free_segment(Addr start , SizeT len ) ;
3952 extern Bool vgPlain_am_notify_client_mmap(Addr a , SizeT len , UInt prot ,   3952 extern Bool vgPlain_am_notify_client_mmap(Addr a , SizeT len , UInt prot ,
3953                                           UInt flags , Int fd , Off64T offset ) ;   3953                                           UInt flags , Int fd , Off64T offset ) ;
3954 extern Bool vgPlain_am_notify_client_shmat(Addr a , SizeT len , UInt prot ) ;   3954 extern Bool vgPlain_am_notify_client_shmat(Addr a , SizeT len , UInt prot ) ;
3955 extern Bool vgPlain_am_notify_mprotect(Addr start , SizeT len , UInt prot ) ;   3955 extern Bool vgPlain_am_notify_mprotect(Addr start , SizeT len , UInt prot ) ;
3956 extern Bool vgPlain_am_notify_munmap(Addr start , SizeT len ) ;   3956 extern Bool vgPlain_am_notify_munmap(Addr start , SizeT len ) ;
3957 extern SysRes vgPlain_am_do_mmap_NO_NOTIFY(Addr start , SizeT length ,   3957 extern SysRes vgPlain_am_do_mmap_NO_NOTIFY(Addr start , SizeT length ,
3958                                            UInt prot , UInt flags , Int fd ,   3958                                            UInt prot , UInt flags , Int fd ,
3959                                            Off64T offset ) ;   3959                                            Off64T offset ) ;
3960 extern SysRes vgPlain_am_mmap_file_fixed_client(Addr start , SizeT length ,   3960 extern SysRes vgPlain_am_mmap_file_fixed_client(Addr start , SizeT length ,
3961                                                 UInt prot , Int fd ,   3961                                                 UInt prot , Int fd ,
3962                                                 Off64T offset ) ;   3962                                                 Off64T offset ) ;
3963 extern SysRes vgPlain_am_mmap_named_file_fixed_client(Addr start ,   3963 extern SysRes vgPlain_am_mmap_named_file_fixed_client(Addr start ,
3964                                                       SizeT length , UInt prot ,   3964                                                       SizeT length , UInt prot ,
3965                                                       Int fd , Off64T offset ,   3965                                                       Int fd , Off64T offset ,
3966                                                       HChar const   *name ) ;   3966                                                       HChar const   *name ) ;
3967 extern SysRes vgPlain_am_mmap_anon_fixed_client(Addr start , SizeT length ,   3967 extern SysRes vgPlain_am_mmap_anon_fixed_client(Addr start , SizeT length ,
3968                                                 UInt prot ) ;   3968                                                 UInt prot ) ;
3969 extern SysRes vgPlain_am_mmap_anon_float_client(SizeT length , Int prot ) ;   3969 extern SysRes vgPlain_am_mmap_anon_float_client(SizeT length , Int prot ) ;
3970 extern SysRes vgPlain_am_sbrk_anon_float_client(SizeT length , Int prot ) ;   3970 extern SysRes vgPlain_am_sbrk_anon_float_client(SizeT length , Int prot ) ;
3971 extern SysRes vgPlain_am_mmap_anon_float_valgrind(SizeT cszB ) ;   3971 extern SysRes vgPlain_am_mmap_anon_float_valgrind(SizeT cszB ) ;
3972 extern SysRes vgPlain_am_sbrk_anon_float_valgrind(SizeT cszB ) ;   3972 extern SysRes vgPlain_am_sbrk_anon_float_valgrind(SizeT cszB ) ;
3973 extern SysRes vgPlain_am_mmap_file_float_valgrind(SizeT length , UInt prot ,   3973 extern SysRes vgPlain_am_mmap_file_float_valgrind(SizeT length , UInt prot ,
3974                                                   Int fd , Off64T offset ) ;   3974                                                   Int fd , Off64T offset ) ;
3975 extern SysRes vgPlain_am_shared_mmap_file_float_valgrind(SizeT length ,   3975 extern SysRes vgPlain_am_shared_mmap_file_float_valgrind(SizeT length ,
3976                                                          UInt prot , Int fd ,   3976                                                          UInt prot , Int fd ,
3977                                                          Off64T offset ) ;   3977                                                          Off64T offset ) ;
3978 extern SysRes vgPlain_am_munmap_client(Bool *need_discard , Addr start ,   3978 extern SysRes vgPlain_am_munmap_client(Bool *need_discard , Addr start ,
3979                                        SizeT length ) ;   3979                                        SizeT length ) ;
3980 extern Bool vgPlain_am_change_ownership_v_to_c(Addr start , SizeT len ) ;   3980 extern Bool vgPlain_am_change_ownership_v_to_c(Addr start , SizeT len ) ;
3981 extern void vgPlain_am_set_segment_isCH_if_SkAnonC(NSegment *seg ) ;   3981 extern void vgPlain_am_set_segment_isCH_if_SkAnonC(NSegment *seg ) ;
3982 extern void vgPlain_am_set_segment_hasT_if_SkFileC_or_SkAnonC(NSegment * ) ;   3982 extern void vgPlain_am_set_segment_hasT_if_SkFileC_or_SkAnonC(NSegment * ) ;
3983 extern Bool vgPlain_am_create_reservation(Addr start , SizeT length ,   3983 extern Bool vgPlain_am_create_reservation(Addr start , SizeT length ,
3984                                           ShrinkMode smode , SSizeT extra ) ;   3984                                           ShrinkMode smode , SSizeT extra ) ;
3985 extern Bool vgPlain_am_extend_into_adjacent_reservation_client(NSegment *seg ,   3985 extern Bool vgPlain_am_extend_into_adjacent_reservation_client(NSegment *seg ,
3986                                                                SSizeT delta ) ;   3986                                                                SSizeT delta ) ;
3987 extern Bool vgPlain_am_extend_map_client(Bool *need_discard , NSegment *seg ,   3987 extern Bool vgPlain_am_extend_map_client(Bool *need_discard , NSegment *seg ,
3988                                          SizeT delta ) ;   3988                                          SizeT delta ) ;
3989 extern Bool vgPlain_am_relocate_nooverlap_client(Bool *need_discard ,   3989 extern Bool vgPlain_am_relocate_nooverlap_client(Bool *need_discard ,
3990                                                  Addr old_addr , SizeT old_len ,   3990                                                  Addr old_addr , SizeT old_len ,
3991                                                  Addr new_addr , SizeT new_len ) ;   3991                                                  Addr new_addr , SizeT new_len ) ;
3992 extern VgStack *vgPlain_am_alloc_VgStack(Addr *initial_sp ) ;   3992 extern VgStack *vgPlain_am_alloc_VgStack(Addr *initial_sp ) ;
3993 extern SizeT vgPlain_am_get_VgStack_unused_szB(VgStack *stack , SizeT limit ) ;   3993 extern SizeT vgPlain_am_get_VgStack_unused_szB(VgStack *stack , SizeT limit ) ;
3994 extern  __attribute__((__noreturn__)) void vgPlain_exit(Int status ) ;   3994 extern  __attribute__((__noreturn__)) void vgPlain_exit(Int status ) ;
3995 extern  __attribute__((__noreturn__)) void vgPlain_tool_panic(Char *str ) ;   3995 extern  __attribute__((__noreturn__)) void vgPlain_tool_panic(Char *str ) ;
3996 extern  __attribute__((__noreturn__)) void vgPlain_assert_fail(Bool isCore ,   3996 extern  __attribute__((__noreturn__)) void vgPlain_assert_fail(Bool isCore ,
3997                                                                Char const   *expr ,   3997                                                                Char const   *expr ,
3998                                                                Char const   *file ,   3998                                                                Char const   *file ,
3999                                                                Int line ,   3999                                                                Int line ,
4000                                                                Char const   *fn ,   4000                                                                Char const   *fn ,
4001                                                                HChar const   *format   4001                                                                HChar const   *format
4002                                                                , ...) ;   4002                                                                , ...) ;
4003 extern  __attribute__((__noreturn__)) void vgPlain_core_panic(Char *str ) ;   4003 extern  __attribute__((__noreturn__)) void vgPlain_core_panic(Char *str ) ;
4004 extern  __attribute__((__noreturn__)) void vgPlain_core_panic_at(Char *str ,   4004 extern  __attribute__((__noreturn__)) void vgPlain_core_panic_at(Char *str ,
4005                                                                  UnwindStartRegs * ) ;   4005                                                                  UnwindStartRegs * ) ;
4006 extern  __attribute__((__noreturn__)) void vgPlain_unimplemented(Char *msg ) ;   4006 extern  __attribute__((__noreturn__)) void vgPlain_unimplemented(Char *msg ) ;
4007 extern void vgPlain_show_sched_status(void) ;   4007 extern void vgPlain_show_sched_status(void) ;
4008 extern UInt ( /* format attribute */  vgPlain_sprintf)(Char *buf ,   4008 extern UInt ( /* format attribute */  vgPlain_sprintf)(Char *buf ,
4009                                                        HChar const   *format   4009                                                        HChar const   *format
4010                                                        , ...) ;   4010                                                        , ...) ;
4011 extern UInt ( /* format attribute */  vgPlain_vsprintf)(Char *buf ,   4011 extern UInt ( /* format attribute */  vgPlain_vsprintf)(Char *buf ,
4012                                                         HChar const   *format ,   4012                                                         HChar const   *format ,
4013                                                         va_list vargs ) ;   4013                                                         va_list vargs ) ;
4014 extern UInt ( /* format attribute */  vgPlain_snprintf)(Char *buf , Int size ,   4014 extern UInt ( /* format attribute */  vgPlain_snprintf)(Char *buf , Int size ,
4015                                                         HChar const   *format   4015                                                         HChar const   *format
4016                                                         , ...) ;   4016                                                         , ...) ;
4017 extern UInt ( /* format attribute */  vgPlain_vsnprintf)(Char *buf , Int size ,   4017 extern UInt ( /* format attribute */  vgPlain_vsnprintf)(Char *buf , Int size ,
4018                                                          HChar const   *format ,   4018                                                          HChar const   *format ,
4019                                                          va_list vargs ) ;   4019                                                          va_list vargs ) ;
4020 extern void vgPlain_percentify(ULong n , ULong m , UInt d , Int n_buf ,   4020 extern void vgPlain_percentify(ULong n , ULong m , UInt d , Int n_buf ,
4021                                char *buf ) ;   4021                                char *buf ) ;
4022 extern UInt ( /* format attribute */  vgPlain_printf)(HChar const   *format   4022 extern UInt ( /* format attribute */  vgPlain_printf)(HChar const   *format
4023                                                       , ...) ;   4023                                                       , ...) ;
4024 extern UInt ( /* format attribute */  vgPlain_vprintf)(HChar const   *format ,   4024 extern UInt ( /* format attribute */  vgPlain_vprintf)(HChar const   *format ,
4025                                                        va_list vargs ) ;   4025                                                        va_list vargs ) ;
4026 extern UInt ( /* format attribute */  vgPlain_printf_xml)(HChar const   *format   4026 extern UInt ( /* format attribute */  vgPlain_printf_xml)(HChar const   *format
4027                                                           , ...) ;   4027                                                           , ...) ;
4028 extern UInt ( /* format attribute */  vgPlain_vprintf_xml)(HChar const   *format ,   4028 extern UInt ( /* format attribute */  vgPlain_vprintf_xml)(HChar const   *format ,
4029                                                            va_list vargs ) ;   4029                                                            va_list vargs ) ;
4030 extern void vgPlain_vcbprintf(void (*char_sink)(HChar  , void *opaque ) ,   4030 extern void vgPlain_vcbprintf(void (*char_sink)(HChar  , void *opaque ) ,
4031                               void *opaque , HChar const   *format ,   4031                               void *opaque , HChar const   *format ,
4032                               va_list vargs ) ;   4032                               va_list vargs ) ;
4033 extern UInt ( /* format attribute */  vgPlain_message)(VgMsgKind kind ,   4033 extern UInt ( /* format attribute */  vgPlain_message)(VgMsgKind kind ,
4034                                                        HChar const   *format   4034                                                        HChar const   *format
4035                                                        , ...) ;   4035                                                        , ...) ;
4036 extern UInt ( /* format attribute */  vgPlain_vmessage)(VgMsgKind kind ,   4036 extern UInt ( /* format attribute */  vgPlain_vmessage)(VgMsgKind kind ,
4037                                                         HChar const   *format ,   4037                                                         HChar const   *format ,
4038                                                         va_list vargs ) ;   4038                                                         va_list vargs ) ;
4039 extern UInt ( /* format attribute */  vgPlain_fmsg)(HChar const   *format  , ...) ;   4039 extern UInt ( /* format attribute */  vgPlain_fmsg)(HChar const   *format  , ...) ;
4040 extern  __attribute__((__noreturn__)) void ( /* format attribute */  vgPlain_fmsg_bad_option)(HChar *opt ,   4040 extern  __attribute__((__noreturn__)) void ( /* format attribute */  vgPlain_fmsg_bad_option)(HChar *opt ,
4041                                                                                               HChar const   *format   4041                                                                                               HChar const   *format
4042                                                                                               , ...) ;   4042                                                                                               , ...) ;
4043 extern UInt ( /* format attribute */  vgPlain_umsg)(HChar const   *format  , ...) ;   4043 extern UInt ( /* format attribute */  vgPlain_umsg)(HChar const   *format  , ...) ;
4044 extern UInt ( /* format attribute */  vgPlain_dmsg)(HChar const   *format  , ...) ;   4044 extern UInt ( /* format attribute */  vgPlain_dmsg)(HChar const   *format  , ...) ;
4045 extern void vgPlain_message_flush(void) ;   4045 extern void vgPlain_message_flush(void) ;
4046 extern OutputSink vgPlain_log_output_sink ;   4046 extern OutputSink vgPlain_log_output_sink ;
4047 extern OutputSink vgPlain_xml_output_sink ;   4047 extern OutputSink vgPlain_xml_output_sink ;
4048 extern void vgPlain_elapsed_wallclock_time(HChar *buf ) ;   4048 extern void vgPlain_elapsed_wallclock_time(HChar *buf ) ;
4049 extern  __attribute__((__noreturn__)) void vgPlain_err_missing_prog(void) ;   4049 extern  __attribute__((__noreturn__)) void vgPlain_err_missing_prog(void) ;
4050 extern  __attribute__((__noreturn__)) void vgPlain_err_config_error(Char *format   4050 extern  __attribute__((__noreturn__)) void vgPlain_err_config_error(Char *format
4051                                                                     , ...) ;   4051                                                                     , ...) ;
4052 void *vgPlain_malloc(HChar *cc , SizeT nbytes ) ;   4052 void *vgPlain_malloc(HChar *cc , SizeT nbytes ) ;
4053 void vgPlain_free(void *ptr ) ;   4053 void vgPlain_free(void *ptr ) ;
4054 void *vgPlain_calloc(HChar *cc , SizeT nmemb , SizeT bytes_per_memb ) ;   4054 void *vgPlain_calloc(HChar *cc , SizeT nmemb , SizeT bytes_per_memb ) ;
4055 void *vgPlain_realloc(HChar *cc , void *ptr , SizeT size ) ;   4055 void *vgPlain_realloc(HChar *cc , void *ptr , SizeT size ) ;
4056 Char *vgPlain_strdup(HChar *cc , Char const   *s ) ;   4056 Char *vgPlain_strdup(HChar *cc , Char const   *s ) ;
4057 SizeT vgPlain_malloc_usable_size(void *p ) ;   4057 SizeT vgPlain_malloc_usable_size(void *p ) ;
4058 __attribute__((__noreturn__)) void vgPlain_out_of_memory_NORETURN(HChar *who ,   4058 __attribute__((__noreturn__)) void vgPlain_out_of_memory_NORETURN(HChar *who ,
4059                                                                    SizeT szB ) ;   4059                                                                    SizeT szB ) ;
4060 void *vgPlain_arena_malloc(ArenaId aid , HChar *cc , SizeT req_pszB ) ;   4060 void *vgPlain_arena_malloc(ArenaId aid , HChar *cc , SizeT req_pszB ) ;
4061 void vgPlain_arena_free(ArenaId aid , void *ptr ) ;   4061 void vgPlain_arena_free(ArenaId aid , void *ptr ) ;
4062 void *vgPlain_arena_calloc(ArenaId aid , HChar *cc , SizeT nmemb ,   4062 void *vgPlain_arena_calloc(ArenaId aid , HChar *cc , SizeT nmemb ,
4063                            SizeT bytes_per_memb ) ;   4063                            SizeT bytes_per_memb ) ;
4064 void *vgPlain_arena_realloc(ArenaId aid , HChar *cc , void *ptr ,   4064 void *vgPlain_arena_realloc(ArenaId aid , HChar *cc , void *ptr ,
4065                             SizeT req_pszB ) ;   4065                             SizeT req_pszB ) ;
4066 void *vgPlain_arena_memalign(ArenaId aid , HChar *cc , SizeT req_alignB ,   4066 void *vgPlain_arena_memalign(ArenaId aid , HChar *cc , SizeT req_alignB ,
4067                              SizeT req_pszB ) ;   4067                              SizeT req_pszB ) ;
4068 __inline Char *vgPlain_arena_strdup(ArenaId aid , HChar *cc , Char const   *s ) ;   4068 __inline Char *vgPlain_arena_strdup(ArenaId aid , HChar *cc , Char const   *s ) ;
4069 SizeT vgPlain_arena_malloc_usable_size(ArenaId aid , void *ptr ) ;   4069 SizeT vgPlain_arena_malloc_usable_size(ArenaId aid , void *ptr ) ;
4070 void vgPlain_mallinfo(ThreadId tid , struct vg_mallinfo *mi ) ;   4070 void vgPlain_mallinfo(ThreadId tid , struct vg_mallinfo *mi ) ;
4071 void vgPlain_sanity_check_malloc_all(void) ;   4071 void vgPlain_sanity_check_malloc_all(void) ;
4072 void vgPlain_print_all_arena_stats(void) ;   4072 void vgPlain_print_all_arena_stats(void) ;
4073 void vgPlain_print_arena_cc_analysis(void) ;   4073 void vgPlain_print_arena_cc_analysis(void) ;
4074 extern Int vgPlain_clo_verbosity ;   4074 extern Int vgPlain_clo_verbosity ;
4075 extern Bool vgPlain_clo_stats ;   4075 extern Bool vgPlain_clo_stats ;
4076 extern Int vgPlain_clo_vgdb_error ;   4076 extern Int vgPlain_clo_vgdb_error ;
4077 extern Bool vgPlain_clo_xml ;   4077 extern Bool vgPlain_clo_xml ;
4078 extern HChar *vgPlain_clo_xml_user_comment ;   4078 extern HChar *vgPlain_clo_xml_user_comment ;
4079 extern VexControl vgPlain_clo_vex_control ;   4079 extern VexControl vgPlain_clo_vex_control ;
4080 extern Int vgPlain_clo_backtrace_size ;   4080 extern Int vgPlain_clo_backtrace_size ;
4081 extern Bool vgPlain_clo_show_below_main ;   4081 extern Bool vgPlain_clo_show_below_main ;
4082 extern Char *vgPlain_expand_file_name(Char *option_name , Char *format ) ;   4082 extern Char *vgPlain_expand_file_name(Char *option_name , Char *format ) ;
4083 extern Bool vgPlain_clo_error_limit ;   4083 extern Bool vgPlain_clo_error_limit ;
4084 extern Int vgPlain_clo_error_exitcode ;   4084 extern Int vgPlain_clo_error_exitcode ;
4085 extern VgVgdb vgPlain_clo_vgdb ;   4085 extern VgVgdb vgPlain_clo_vgdb ;
4086 extern Int vgPlain_clo_vgdb_poll ;   4086 extern Int vgPlain_clo_vgdb_poll ;
4087 extern HChar *vgPlain_clo_vgdb_prefix ;   4087 extern HChar *vgPlain_clo_vgdb_prefix ;
4088 extern Bool vgPlain_clo_vgdb_shadow_registers ;   4088 extern Bool vgPlain_clo_vgdb_shadow_registers ;
4089 extern Bool vgPlain_clo_db_attach ;   4089 extern Bool vgPlain_clo_db_attach ;
4090 extern Char *vgPlain_clo_db_command ;   4090 extern Char *vgPlain_clo_db_command ;
4091 extern Int vgPlain_clo_gen_suppressions ;   4091 extern Int vgPlain_clo_gen_suppressions ;
4092 extern Int vgPlain_clo_sanity_level ;   4092 extern Int vgPlain_clo_sanity_level ;
4093 extern Bool vgPlain_clo_demangle ;   4093 extern Bool vgPlain_clo_demangle ;
4094 extern HChar *vgPlain_clo_soname_synonyms ;   4094 extern HChar *vgPlain_clo_soname_synonyms ;
4095 extern Bool vgPlain_clo_trace_children ;   4095 extern Bool vgPlain_clo_trace_children ;
4096 extern HChar *vgPlain_clo_trace_children_skip ;   4096 extern HChar *vgPlain_clo_trace_children_skip ;
4097 extern HChar *vgPlain_clo_trace_children_skip_by_arg ;   4097 extern HChar *vgPlain_clo_trace_children_skip_by_arg ;
4098 extern Bool vgPlain_clo_child_silent_after_fork ;   4098 extern Bool vgPlain_clo_child_silent_after_fork ;
4099 extern Char *vgPlain_clo_log_fname_expanded ;   4099 extern Char *vgPlain_clo_log_fname_expanded ;
4100 extern Char *vgPlain_clo_xml_fname_expanded ;   4100 extern Char *vgPlain_clo_xml_fname_expanded ;
4101 extern Bool vgPlain_clo_time_stamp ;   4101 extern Bool vgPlain_clo_time_stamp ;
4102 extern Int vgPlain_clo_input_fd ;   4102 extern Int vgPlain_clo_input_fd ;
4103 extern Int vgPlain_clo_n_suppressions ;   4103 extern Int vgPlain_clo_n_suppressions ;
4104 extern Char *vgPlain_clo_suppressions[100] ;   4104 extern Char *vgPlain_clo_suppressions[100] ;
4105 extern Int vgPlain_clo_n_fullpath_after ;   4105 extern Int vgPlain_clo_n_fullpath_after ;
4106 extern Char *vgPlain_clo_fullpath_after[100] ;   4106 extern Char *vgPlain_clo_fullpath_after[100] ;
4107 extern UChar vgPlain_clo_trace_flags ;   4107 extern UChar vgPlain_clo_trace_flags ;
4108 extern UChar vgPlain_clo_profile_flags ;   4108 extern UChar vgPlain_clo_profile_flags ;
4109 extern Int vgPlain_clo_trace_notbelow ;   4109 extern Int vgPlain_clo_trace_notbelow ;
4110 extern Bool vgPlain_clo_trace_syscalls ;   4110 extern Bool vgPlain_clo_trace_syscalls ;
4111 extern Bool vgPlain_clo_trace_signals ;   4111 extern Bool vgPlain_clo_trace_signals ;
4112 extern Bool vgPlain_clo_trace_symtab ;   4112 extern Bool vgPlain_clo_trace_symtab ;
4113 extern HChar *vgPlain_clo_trace_symtab_patt ;   4113 extern HChar *vgPlain_clo_trace_symtab_patt ;
4114 extern Bool vgPlain_clo_trace_cfi ;   4114 extern Bool vgPlain_clo_trace_cfi ;
4115 extern Bool vgPlain_clo_debug_dump_syms ;   4115 extern Bool vgPlain_clo_debug_dump_syms ;
4116 extern Bool vgPlain_clo_debug_dump_line ;   4116 extern Bool vgPlain_clo_debug_dump_line ;
4117 extern Bool vgPlain_clo_debug_dump_frames ;   4117 extern Bool vgPlain_clo_debug_dump_frames ;
4118 extern Bool vgPlain_clo_trace_redir ;   4118 extern Bool vgPlain_clo_trace_redir ;
4119 extern enum FairSchedType vgPlain_clo_fair_sched ;   4119 extern enum FairSchedType vgPlain_clo_fair_sched ;
4120 extern Bool vgPlain_clo_trace_sched ;   4120 extern Bool vgPlain_clo_trace_sched ;
4121 extern Bool vgPlain_clo_profile_heap ;   4121 extern Bool vgPlain_clo_profile_heap ;
4122 extern Int vgPlain_clo_dump_error ;   4122 extern Int vgPlain_clo_dump_error ;
4123 extern Char *vgPlain_clo_sim_hints ;   4123 extern Char *vgPlain_clo_sim_hints ;
4124 extern Bool vgPlain_clo_sym_offsets ;   4124 extern Bool vgPlain_clo_sym_offsets ;
4125 extern Bool vgPlain_clo_read_var_info ;   4125 extern Bool vgPlain_clo_read_var_info ;
4126 extern Char *vgPlain_clo_prefix_to_strip ;   4126 extern Char *vgPlain_clo_prefix_to_strip ;
4127 extern Int vgPlain_clo_n_req_tsyms ;   4127 extern Int vgPlain_clo_n_req_tsyms ;
4128 extern HChar *vgPlain_clo_req_tsyms[100] ;   4128 extern HChar *vgPlain_clo_req_tsyms[100] ;
4129 extern Bool vgPlain_clo_track_fds ;   4129 extern Bool vgPlain_clo_track_fds ;
4130 extern Bool vgPlain_clo_run_libc_freeres ;   4130 extern Bool vgPlain_clo_run_libc_freeres ;
4131 extern Bool vgPlain_clo_show_emwarns ;   4131 extern Bool vgPlain_clo_show_emwarns ;
4132 extern Word vgPlain_clo_max_stackframe ;   4132 extern Word vgPlain_clo_max_stackframe ;
4133 extern Word vgPlain_clo_main_stacksize ;   4133 extern Word vgPlain_clo_main_stacksize ;
4134 extern Bool vgPlain_clo_wait_for_gdb ;   4134 extern Bool vgPlain_clo_wait_for_gdb ;
4135 extern VgSmc vgPlain_clo_smc_check ;   4135 extern VgSmc vgPlain_clo_smc_check ;
4136 extern HChar *vgPlain_clo_kernel_variant ;   4136 extern HChar *vgPlain_clo_kernel_variant ;
4137 extern Bool vgPlain_clo_dsymutil ;   4137 extern Bool vgPlain_clo_dsymutil ;
4138 extern Bool vgPlain_should_we_trace_this_child(HChar *child_exe_name ,   4138 extern Bool vgPlain_should_we_trace_this_child(HChar *child_exe_name ,
4139                                                HChar **child_argv ) ;   4139                                                HChar **child_argv ) ;
4140 extern  __attribute__((__nothrow__)) int setjmp(struct __jmp_buf_tag *__env ) ;   4140 extern  __attribute__((__nothrow__)) int setjmp(struct __jmp_buf_tag *__env ) ;
4141 extern  __attribute__((__nothrow__)) int __sigsetjmp(struct __jmp_buf_tag *__env ,   4141 extern  __attribute__((__nothrow__)) int __sigsetjmp(struct __jmp_buf_tag *__env ,
4142                                                      int __savemask ) ;   4142                                                      int __savemask ) ;
4143 extern  __attribute__((__nothrow__)) int _setjmp(struct __jmp_buf_tag *__env ) ;   4143 extern  __attribute__((__nothrow__)) int _setjmp(struct __jmp_buf_tag *__env ) ;
4144 extern  __attribute__((__nothrow__,   4144 extern  __attribute__((__nothrow__,
4145 __noreturn__)) void longjmp(struct __jmp_buf_tag *__env , int __val ) ;   4145 __noreturn__)) void longjmp(struct __jmp_buf_tag *__env , int __val ) ;
4146 extern  __attribute__((__nothrow__,   4146 extern  __attribute__((__nothrow__,
4147 __noreturn__)) void _longjmp(struct __jmp_buf_tag *__env , int __val ) ;   4147 __noreturn__)) void _longjmp(struct __jmp_buf_tag *__env , int __val ) ;
4148 extern  __attribute__((__nothrow__,   4148 extern  __attribute__((__nothrow__,
4149 __noreturn__)) void siglongjmp(struct __jmp_buf_tag *__env , int __val ) ;   4149 __noreturn__)) void siglongjmp(struct __jmp_buf_tag *__env , int __val ) ;
4150 extern UWord __attribute__((__returns_twice__))  ( __attribute__((__regparm__(1))) VG_MINIMAL_SETJMP)(UInt *_env ) ;   4150 extern UWord __attribute__((__returns_twice__))  ( __attribute__((__regparm__(1))) VG_MINIMAL_SETJMP)(UInt *_env ) ;
4151 extern  __attribute__((__noreturn__)) void ( __attribute__((__regparm__(1))) VG_MINIMAL_LONGJMP)(UInt *_env ) ;   4151 extern  __attribute__((__noreturn__)) void ( __attribute__((__regparm__(1))) VG_MINIMAL_LONGJMP)(UInt *_env ) ;
4152 extern ThreadId vgPlain_get_running_tid(void) ;   4152 extern ThreadId vgPlain_get_running_tid(void) ;
4153 extern ThreadState vgPlain_threads[500] ;   4153 extern ThreadState vgPlain_threads[500] ;
4154 extern ThreadId vgPlain_running_tid ;   4154 extern ThreadId vgPlain_running_tid ;
4155 extern void vgPlain_init_Threads(void) ;   4155 extern void vgPlain_init_Threads(void) ;
4156 extern HChar const   *vgPlain_name_of_ThreadStatus(ThreadStatus status ) ;   4156 extern HChar const   *vgPlain_name_of_ThreadStatus(ThreadStatus status ) ;
4157 extern ThreadState *vgPlain_get_ThreadState(ThreadId tid ) ;   4157 extern ThreadState *vgPlain_get_ThreadState(ThreadId tid ) ;
4158 extern Bool vgPlain_is_valid_tid(ThreadId tid ) ;   4158 extern Bool vgPlain_is_valid_tid(ThreadId tid ) ;
4159 extern Bool vgPlain_is_running_thread(ThreadId tid ) ;   4159 extern Bool vgPlain_is_running_thread(ThreadId tid ) ;
4160 extern Bool vgPlain_is_exiting(ThreadId tid ) ;   4160 extern Bool vgPlain_is_exiting(ThreadId tid ) ;
4161 extern Int vgPlain_count_living_threads(void) ;   4161 extern Int vgPlain_count_living_threads(void) ;
4162 extern Int vgPlain_count_runnable_threads(void) ;   4162 extern Int vgPlain_count_runnable_threads(void) ;
4163 extern ThreadId vgPlain_lwpid_to_vgtid(Int lwpid ) ;   4163 extern ThreadId vgPlain_lwpid_to_vgtid(Int lwpid ) ;
4164 extern FastCacheEntry __attribute__((__aligned__(16)))  vgPlain_tt_fast[1 << 15] ;   4164 extern FastCacheEntry __attribute__((__aligned__(16)))  vgPlain_tt_fast[1 << 15] ;
4165 extern void vgPlain_init_tt_tc(void) ;   4165 extern void vgPlain_init_tt_tc(void) ;
4166 extern void vgPlain_add_to_transtab(VexGuestExtents *vge , Addr64 entry ,   4166 extern void vgPlain_add_to_transtab(VexGuestExtents *vge , Addr64 entry ,
4167                                     AddrH code , UInt code_len ,   4167                                     AddrH code , UInt code_len ,
4168                                     Bool is_self_checking , Int offs_profInc ,   4168                                     Bool is_self_checking , Int offs_profInc ,
4169                                     UInt n_guest_instrs , VexArch arch_host ) ;   4169                                     UInt n_guest_instrs , VexArch arch_host ) ;
4170 extern void vgPlain_tt_tc_do_chaining(void *from__patch_addr , UInt to_sNo ,   4170 extern void vgPlain_tt_tc_do_chaining(void *from__patch_addr , UInt to_sNo ,
4171                                       UInt to_tteNo , Bool to_fastEP ) ;   4171                                       UInt to_tteNo , Bool to_fastEP ) ;
4172 extern Bool vgPlain_search_transtab(AddrH *res_hcode , UInt *res_sNo ,   4172 extern Bool vgPlain_search_transtab(AddrH *res_hcode , UInt *res_sNo ,
4173                                     UInt *res_tteNo , Addr64 guest_addr ,   4173                                     UInt *res_tteNo , Addr64 guest_addr ,
4174                                     Bool upd_cache ) ;   4174                                     Bool upd_cache ) ;
4175 extern void vgPlain_discard_translations(Addr64 start , ULong range ,   4175 extern void vgPlain_discard_translations(Addr64 start , ULong range ,
4176                                          HChar *who ) ;   4176                                          HChar *who ) ;
4177 extern void vgPlain_print_tt_tc_stats(void) ;   4177 extern void vgPlain_print_tt_tc_stats(void) ;
4178 extern UInt vgPlain_get_bbs_translated(void) ;   4178 extern UInt vgPlain_get_bbs_translated(void) ;
4179 extern void vgPlain_add_to_unredir_transtab(VexGuestExtents *vge ,   4179 extern void vgPlain_add_to_unredir_transtab(VexGuestExtents *vge ,
4180                                             Addr64 entry , AddrH code ,   4180                                             Addr64 entry , AddrH code ,
4181                                             UInt code_len ) ;   4181                                             UInt code_len ) ;
4182 extern Bool vgPlain_search_unredir_transtab(AddrH *result , Addr64 guest_addr ) ;   4182 extern Bool vgPlain_search_unredir_transtab(AddrH *result , Addr64 guest_addr ) ;
4183 extern ULong vgPlain_get_BB_profile(BBProfEntry *tops , UInt n_tops ) ;   4183 extern ULong vgPlain_get_BB_profile(BBProfEntry *tops , UInt n_tops ) ;
4184 extern ExeContext *vgPlain_record_ExeContext(ThreadId tid , Word first_ip_delta ) ;   4184 extern ExeContext *vgPlain_record_ExeContext(ThreadId tid , Word first_ip_delta ) ;
4185 extern ExeContext *vgPlain_record_depth_1_ExeContext(ThreadId tid ) ;   4185 extern ExeContext *vgPlain_record_depth_1_ExeContext(ThreadId tid ) ;
4186 extern void vgPlain_apply_ExeContext(void (*action)(UInt n , Addr ip ) ,   4186 extern void vgPlain_apply_ExeContext(void (*action)(UInt n , Addr ip ) ,
4187                                      ExeContext *ec , UInt n_ips ) ;   4187                                      ExeContext *ec , UInt n_ips ) ;
4188 extern Bool vgPlain_eq_ExeContext(VgRes res , ExeContext *e1 , ExeContext *e2 ) ;   4188 extern Bool vgPlain_eq_ExeContext(VgRes res , ExeContext *e1 , ExeContext *e2 ) ;
4189 extern void vgPlain_pp_ExeContext(ExeContext *ec ) ;   4189 extern void vgPlain_pp_ExeContext(ExeContext *ec ) ;
4190 extern UInt vgPlain_get_ECU_from_ExeContext(ExeContext *e ) ;   4190 extern UInt vgPlain_get_ECU_from_ExeContext(ExeContext *e ) ;
4191 extern Int vgPlain_get_ExeContext_n_ips(ExeContext *e ) ;   4191 extern Int vgPlain_get_ExeContext_n_ips(ExeContext *e ) ;
4192 extern ExeContext *vgPlain_get_ExeContext_from_ECU(UInt uniq ) ;   4192 extern ExeContext *vgPlain_get_ExeContext_from_ECU(UInt uniq ) ;
4193 extern ExeContext *vgPlain_make_depth_1_ExeContext_from_Addr(Addr a ) ;   4193 extern ExeContext *vgPlain_make_depth_1_ExeContext_from_Addr(Addr a ) ;
4194 __inline static Bool vgPlain_is_plausible_ECU(UInt ecu )   4194 __inline static Bool vgPlain_is_plausible_ECU(UInt ecu )
4195 {   4195 {
4196   int tmp ;   4196   int tmp ;
4197     4197  
4198   {   4198   {
4199   if (ecu > 0U) {   4199   if (ecu > 0U) {
4200     if ((ecu & 3U) == 0U) {   4200     if ((ecu & 3U) == 0U) {
4201       tmp = 1;   4201       tmp = 1;
4202     } else {   4202     } else {
4203       tmp = 0;   4203       tmp = 0;
4204     }   4204     }
4205   } else {   4205   } else {
4206     tmp = 0;   4206     tmp = 0;
4207   }   4207   }
4208   return ((Bool )tmp);   4208   return ((Bool )tmp);
4209 }   4209 }
4210 }   4210 }
4211 extern ExeContext *vgPlain_make_ExeContext_from_StackTrace(Addr *ips ,   4211 extern ExeContext *vgPlain_make_ExeContext_from_StackTrace(Addr *ips ,
4212                                                            UInt n_ips ) ;   4212                                                            UInt n_ips ) ;
4213 extern ExeContext *vgPlain_get_error_where(Error *err ) ;   4213 extern ExeContext *vgPlain_get_error_where(Error *err ) ;
4214 extern ErrorKind vgPlain_get_error_kind(Error *err ) ;   4214 extern ErrorKind vgPlain_get_error_kind(Error *err ) ;
4215 extern Addr vgPlain_get_error_address(Error *err ) ;   4215 extern Addr vgPlain_get_error_address(Error *err ) ;
4216 extern Char *vgPlain_get_error_string(Error *err ) ;   4216 extern Char *vgPlain_get_error_string(Error *err ) ;
4217 extern void *vgPlain_get_error_extra(Error *err ) ;   4217 extern void *vgPlain_get_error_extra(Error *err ) ;
4218 extern void vgPlain_maybe_record_error(ThreadId tid , ErrorKind ekind , Addr a ,   4218 extern void vgPlain_maybe_record_error(ThreadId tid , ErrorKind ekind , Addr a ,
4219                                        Char *s , void *extra ) ;   4219                                        Char *s , void *extra ) ;
4220 extern Bool vgPlain_unique_error(ThreadId tid , ErrorKind ekind , Addr a ,   4220 extern Bool vgPlain_unique_error(ThreadId tid , ErrorKind ekind , Addr a ,
4221                                  Char *s , void *extra , ExeContext *where ,   4221                                  Char *s , void *extra , ExeContext *where ,
4222                                  Bool print_error , Bool allow_GDB_attach ,   4222                                  Bool print_error , Bool allow_GDB_attach ,
4223                                  Bool count_error ) ;   4223                                  Bool count_error ) ;
4224 extern Bool vgPlain_get_line(Int fd , Char **bufpp , SizeT *nBufp , Int *lineno ) ;   4224 extern Bool vgPlain_get_line(Int fd , Char **bufpp , SizeT *nBufp , Int *lineno ) ;
4225 extern SuppKind vgPlain_get_supp_kind(Supp *su ) ;   4225 extern SuppKind vgPlain_get_supp_kind(Supp *su ) ;
4226 extern Char *vgPlain_get_supp_string(Supp *su ) ;   4226 extern Char *vgPlain_get_supp_string(Supp *su ) ;
4227 extern void *vgPlain_get_supp_extra(Supp *su ) ;   4227 extern void *vgPlain_get_supp_extra(Supp *su ) ;
4228 extern void vgPlain_set_supp_kind(Supp *su , SuppKind suppkind ) ;   4228 extern void vgPlain_set_supp_kind(Supp *su , SuppKind suppkind ) ;
4229 extern void vgPlain_set_supp_string(Supp *su , Char *string ) ;   4229 extern void vgPlain_set_supp_string(Supp *su , Char *string ) ;
4230 extern void vgPlain_set_supp_extra(Supp *su , void *extra ) ;   4230 extern void vgPlain_set_supp_extra(Supp *su , void *extra ) ;
4231 extern void (*vgPlain_tl_pre_clo_init)(void) ;   4231 extern void (*vgPlain_tl_pre_clo_init)(void) ;
4232 extern void vgPlain_basic_tool_funcs(void (*post_clo_init)(void) ,   4232 extern void vgPlain_basic_tool_funcs(void (*post_clo_init)(void) ,
4233                                      IRSB *(*instrument)(VgCallbackClosure *closure ,   4233                                      IRSB *(*instrument)(VgCallbackClosure *closure ,
4234                                                          IRSB *sb_in ,   4234                                                          IRSB *sb_in ,
4235                                                          VexGuestLayout *layout ,   4235                                                          VexGuestLayout *layout ,
4236                                                          VexGuestExtents *vge ,   4236                                                          VexGuestExtents *vge ,
4237                                                          IRType gWordTy ,   4237                                                          IRType gWordTy ,
4238                                                          IRType hWordTy ) ,   4238                                                          IRType hWordTy ) ,
4239                                      void (*fini)(Int  ) ) ;   4239                                      void (*fini)(Int  ) ) ;
4240 extern void vgPlain_details_name(Char *name ) ;   4240 extern void vgPlain_details_name(Char *name ) ;
4241 extern void vgPlain_details_version(Char *version ) ;   4241 extern void vgPlain_details_version(Char *version ) ;
4242 extern void vgPlain_details_description(Char *description ) ;   4242 extern void vgPlain_details_description(Char *description ) ;
4243 extern void vgPlain_details_copyright_author(Char *copyright_author ) ;   4243 extern void vgPlain_details_copyright_author(Char *copyright_author ) ;
4244 extern void vgPlain_details_avg_translation_sizeB(UInt size ) ;   4244 extern void vgPlain_details_avg_translation_sizeB(UInt size ) ;
4245 extern void vgPlain_details_bug_reports_to(Char *bug_reports_to ) ;   4245 extern void vgPlain_details_bug_reports_to(Char *bug_reports_to ) ;
4246 extern void vgPlain_needs_libc_freeres(void) ;   4246 extern void vgPlain_needs_libc_freeres(void) ;
4247 extern void vgPlain_needs_core_errors(void) ;   4247 extern void vgPlain_needs_core_errors(void) ;
4248 extern void vgPlain_needs_tool_errors(Bool (*eq_Error)(VgRes res , Error *e1 ,   4248 extern void vgPlain_needs_tool_errors(Bool (*eq_Error)(VgRes res , Error *e1 ,
4249                                                        Error *e2 ) ,   4249                                                        Error *e2 ) ,
4250                                       void (*before_pp_Error)(Error *err ) ,   4250                                       void (*before_pp_Error)(Error *err ) ,
4251                                       void (*pp_Error)(Error *err ) ,   4251                                       void (*pp_Error)(Error *err ) ,
4252                                       Bool show_ThreadIDs_for_errors ,   4252                                       Bool show_ThreadIDs_for_errors ,
4253                                       UInt (*update_extra)(Error *err ) ,   4253                                       UInt (*update_extra)(Error *err ) ,
4254                                       Bool (*recognised_suppression)(Char *name ,   4254                                       Bool (*recognised_suppression)(Char *name ,
4255                                                                      Supp *su ) ,   4255                                                                      Supp *su ) ,
4256                                       Bool (*read_extra_suppression_info)(Int fd ,   4256                                       Bool (*read_extra_suppression_info)(Int fd ,
4257                                                                           Char **bufpp ,   4257                                                                           Char **bufpp ,
4258                                                                           SizeT *nBufp ,   4258                                                                           SizeT *nBufp ,
4259                                                                           Supp *su ) ,   4259                                                                           Supp *su ) ,
4260                                       Bool (*error_matches_suppression)(Error *err ,   4260                                       Bool (*error_matches_suppression)(Error *err ,
4261                                                                         Supp *su ) ,   4261                                                                         Supp *su ) ,
4262                                       Char *(*get_error_name)(Error *err ) ,   4262                                       Char *(*get_error_name)(Error *err ) ,
4263                                       Bool (*print_extra_suppression_info)(Error *err ,   4263                                       Bool (*print_extra_suppression_info)(Error *err ,
4264                                                                            Char *buf ,   4264                                                                            Char *buf ,
4265                                                                            Int nBuf ) ) ;   4265                                                                            Int nBuf ) ) ;
4266 extern void vgPlain_needs_superblock_discards(void (*discard_superblock_info)(Addr64 orig_addr ,   4266 extern void vgPlain_needs_superblock_discards(void (*discard_superblock_info)(Addr64 orig_addr ,
4267                                                                               VexGuestExtents extents ) ) ;   4267                                                                               VexGuestExtents extents ) ) ;
4268 extern void vgPlain_needs_command_line_options(Bool (*process_cmd_line_option)(Char *argv ) ,   4268 extern void vgPlain_needs_command_line_options(Bool (*process_cmd_line_option)(Char *argv ) ,
4269                                                void (*print_usage)(void) ,   4269                                                void (*print_usage)(void) ,
4270                                                void (*print_debug_usage)(void) ) ;   4270                                                void (*print_debug_usage)(void) ) ;
4271 extern void vgPlain_needs_client_requests(Bool (*handle_client_request)(ThreadId tid ,   4271 extern void vgPlain_needs_client_requests(Bool (*handle_client_request)(ThreadId tid ,
4272                                                                         UWord *arg_block ,   4272                                                                         UWord *arg_block ,
4273                                                                         UWord *ret ) ) ;   4273                                                                         UWord *ret ) ) ;
4274 extern void vgPlain_needs_syscall_wrapper(void (*pre_syscall)(ThreadId tid ,   4274 extern void vgPlain_needs_syscall_wrapper(void (*pre_syscall)(ThreadId tid ,
4275                                                               UInt syscallno ,   4275                                                               UInt syscallno ,
4276                                                               UWord *args ,   4276                                                               UWord *args ,
4277                                                               UInt nArgs ) ,   4277                                                               UInt nArgs ) ,
4278                                           void (*post_syscall)(ThreadId tid ,   4278                                           void (*post_syscall)(ThreadId tid ,
4279                                                                UInt syscallno ,   4279                                                                UInt syscallno ,
4280                                                                UWord *args ,   4280                                                                UWord *args ,
4281                                                                UInt nArgs ,   4281                                                                UInt nArgs ,
4282                                                                SysRes res ) ) ;   4282                                                                SysRes res ) ) ;
4283 extern void vgPlain_needs_sanity_checks(Bool (*cheap_sanity_check)(void) ,   4283 extern void vgPlain_needs_sanity_checks(Bool (*cheap_sanity_check)(void) ,
4284                                         Bool (*expensive_sanity_check)(void) ) ;   4284                                         Bool (*expensive_sanity_check)(void) ) ;
4285 extern void vgPlain_needs_var_info(void) ;   4285 extern void vgPlain_needs_var_info(void) ;
4286 extern void vgPlain_needs_malloc_replacement(void *(*pmalloc)(ThreadId tid ,   4286 extern void vgPlain_needs_malloc_replacement(void *(*pmalloc)(ThreadId tid ,
4287                                                               SizeT n ) ,   4287                                                               SizeT n ) ,
4288                                              void *(*p__builtin_new)(ThreadId tid ,   4288                                              void *(*p__builtin_new)(ThreadId tid ,
4289                                                                      SizeT n ) ,   4289                                                                      SizeT n ) ,
4290                                              void *(*p__builtin_vec_new)(ThreadId tid ,   4290                                              void *(*p__builtin_vec_new)(ThreadId tid ,
4291                                                                          SizeT n ) ,   4291                                                                          SizeT n ) ,
4292                                              void *(*pmemalign)(ThreadId tid ,   4292                                              void *(*pmemalign)(ThreadId tid ,
4293                                                                 SizeT align ,   4293                                                                 SizeT align ,
4294                                                                 SizeT n ) ,   4294                                                                 SizeT n ) ,
4295                                              void *(*pcalloc)(ThreadId tid ,   4295                                              void *(*pcalloc)(ThreadId tid ,
4296                                                               SizeT nmemb ,   4296                                                               SizeT nmemb ,
4297                                                               SizeT size1 ) ,   4297                                                               SizeT size1 ) ,
4298                                              void (*pfree)(ThreadId tid ,   4298                                              void (*pfree)(ThreadId tid ,
4299                                                            void *p ) ,   4299                                                            void *p ) ,
4300                                              void (*p__builtin_delete)(ThreadId tid ,   4300                                              void (*p__builtin_delete)(ThreadId tid ,
4301                                                                        void *p ) ,   4301                                                                        void *p ) ,
4302                                              void (*p__builtin_vec_delete)(ThreadId tid ,   4302                                              void (*p__builtin_vec_delete)(ThreadId tid ,
4303                                                                            void *p ) ,   4303                                                                            void *p ) ,
4304                                              void *(*prealloc)(ThreadId tid ,   4304                                              void *(*prealloc)(ThreadId tid ,
4305                                                                void *p ,   4305                                                                void *p ,
4306                                                                SizeT new_size ) ,   4306                                                                SizeT new_size ) ,
4307                                              SizeT (*pmalloc_usable_size)(ThreadId tid ,   4307                                              SizeT (*pmalloc_usable_size)(ThreadId tid ,
4308                                                                           void *p ) ,   4308                                                                           void *p ) ,
4309                                              SizeT client_malloc_redzone_szB ) ;   4309                                              SizeT client_malloc_redzone_szB ) ;
4310 extern void vgPlain_needs_xml_output(void) ;   4310 extern void vgPlain_needs_xml_output(void) ;
4311 extern void vgPlain_needs_final_IR_tidy_pass(IRSB *(*final_tidy)(IRSB * ) ) ;   4311 extern void vgPlain_needs_final_IR_tidy_pass(IRSB *(*final_tidy)(IRSB * ) ) ;
4312 extern void vgPlain_track_new_mem_startup(void (*f)(Addr a , SizeT len ,   4312 extern void vgPlain_track_new_mem_startup(void (*f)(Addr a , SizeT len ,
4313                                                     Bool rr , Bool ww ,   4313                                                     Bool rr , Bool ww ,
4314                                                     Bool xx , ULong di_handle ) ) ;   4314                                                     Bool xx , ULong di_handle ) ) ;
4315 extern void vgPlain_track_new_mem_stack_signal(void (*f)(Addr a , SizeT len ,   4315 extern void vgPlain_track_new_mem_stack_signal(void (*f)(Addr a , SizeT len ,
4316                                                          ThreadId tid ) ) ;   4316                                                          ThreadId tid ) ) ;
4317 extern void vgPlain_track_new_mem_brk(void (*f)(Addr a , SizeT len ,   4317 extern void vgPlain_track_new_mem_brk(void (*f)(Addr a , SizeT len ,
4318                                                 ThreadId tid ) ) ;   4318                                                 ThreadId tid ) ) ;
4319 extern void vgPlain_track_new_mem_mmap(void (*f)(Addr a , SizeT len , Bool rr ,   4319 extern void vgPlain_track_new_mem_mmap(void (*f)(Addr a , SizeT len , Bool rr ,
4320                                                  Bool ww , Bool xx ,   4320                                                  Bool ww , Bool xx ,
4321                                                  ULong di_handle ) ) ;   4321                                                  ULong di_handle ) ) ;
4322 extern void vgPlain_track_copy_mem_remap(void (*f)(Addr from , Addr to ,   4322 extern void vgPlain_track_copy_mem_remap(void (*f)(Addr from , Addr to ,
4323                                                    SizeT len ) ) ;   4323                                                    SizeT len ) ) ;
4324 extern void vgPlain_track_change_mem_mprotect(void (*f)(Addr a , SizeT len ,   4324 extern void vgPlain_track_change_mem_mprotect(void (*f)(Addr a , SizeT len ,
4325                                                         Bool rr , Bool ww ,   4325                                                         Bool rr , Bool ww ,
4326                                                         Bool xx ) ) ;   4326                                                         Bool xx ) ) ;
4327 extern void vgPlain_track_die_mem_stack_signal(void (*f)(Addr a , SizeT len ) ) ;   4327 extern void vgPlain_track_die_mem_stack_signal(void (*f)(Addr a , SizeT len ) ) ;
4328 extern void vgPlain_track_die_mem_brk(void (*f)(Addr a , SizeT len ) ) ;   4328 extern void vgPlain_track_die_mem_brk(void (*f)(Addr a , SizeT len ) ) ;
4329 extern void vgPlain_track_die_mem_munmap(void (*f)(Addr a , SizeT len ) ) ;   4329 extern void vgPlain_track_die_mem_munmap(void (*f)(Addr a , SizeT len ) ) ;
4330 extern void vgPlain_track_new_mem_stack_4_w_ECU(void ( __attribute__((__regparm__(2))) (*f))(Addr new_ESP ,   4330 extern void vgPlain_track_new_mem_stack_4_w_ECU(void ( __attribute__((__regparm__(2))) (*f))(Addr new_ESP ,
4331                                                                                              UInt ecu ) ) ;   4331                                                                                              UInt ecu ) ) ;
4332 extern void vgPlain_track_new_mem_stack_8_w_ECU(void ( __attribute__((__regparm__(2))) (*f))(Addr new_ESP ,   4332 extern void vgPlain_track_new_mem_stack_8_w_ECU(void ( __attribute__((__regparm__(2))) (*f))(Addr new_ESP ,
4333                                                                                              UInt ecu ) ) ;   4333                                                                                              UInt ecu ) ) ;
4334 extern void vgPlain_track_new_mem_stack_12_w_ECU(void ( __attribute__((__regparm__(2))) (*f))(Addr new_ESP ,   4334 extern void vgPlain_track_new_mem_stack_12_w_ECU(void ( __attribute__((__regparm__(2))) (*f))(Addr new_ESP ,
4335                                                                                               UInt ecu ) ) ;   4335                                                                                               UInt ecu ) ) ;
4336 extern void vgPlain_track_new_mem_stack_16_w_ECU(void ( __attribute__((__regparm__(2))) (*f))(Addr new_ESP ,   4336 extern void vgPlain_track_new_mem_stack_16_w_ECU(void ( __attribute__((__regparm__(2))) (*f))(Addr new_ESP ,
4337                                                                                               UInt ecu ) ) ;   4337                                                                                               UInt ecu ) ) ;
4338 extern void vgPlain_track_new_mem_stack_32_w_ECU(void ( __attribute__((__regparm__(2))) (*f))(Addr new_ESP ,   4338 extern void vgPlain_track_new_mem_stack_32_w_ECU(void ( __attribute__((__regparm__(2))) (*f))(Addr new_ESP ,
4339                                                                                               UInt ecu ) ) ;   4339                                                                                               UInt ecu ) ) ;
4340 extern void vgPlain_track_new_mem_stack_112_w_ECU(void ( __attribute__((__regparm__(2))) (*f))(Addr new_ESP ,   4340 extern void vgPlain_track_new_mem_stack_112_w_ECU(void ( __attribute__((__regparm__(2))) (*f))(Addr new_ESP ,
4341                                                                                                UInt ecu ) ) ;   4341                                                                                                UInt ecu ) ) ;
4342 extern void vgPlain_track_new_mem_stack_128_w_ECU(void ( __attribute__((__regparm__(2))) (*f))(Addr new_ESP ,   4342 extern void vgPlain_track_new_mem_stack_128_w_ECU(void ( __attribute__((__regparm__(2))) (*f))(Addr new_ESP ,
4343                                                                                                UInt ecu ) ) ;   4343                                                                                                UInt ecu ) ) ;
4344 extern void vgPlain_track_new_mem_stack_144_w_ECU(void ( __attribute__((__regparm__(2))) (*f))(Addr new_ESP ,   4344 extern void vgPlain_track_new_mem_stack_144_w_ECU(void ( __attribute__((__regparm__(2))) (*f))(Addr new_ESP ,
4345                                                                                                UInt ecu ) ) ;   4345                                                                                                UInt ecu ) ) ;
4346 extern void vgPlain_track_new_mem_stack_160_w_ECU(void ( __attribute__((__regparm__(2))) (*f))(Addr new_ESP ,   4346 extern void vgPlain_track_new_mem_stack_160_w_ECU(void ( __attribute__((__regparm__(2))) (*f))(Addr new_ESP ,
4347                                                                                                UInt ecu ) ) ;   4347                                                                                                UInt ecu ) ) ;
4348 extern void vgPlain_track_new_mem_stack_w_ECU(void (*f)(Addr a , SizeT len ,   4348 extern void vgPlain_track_new_mem_stack_w_ECU(void (*f)(Addr a , SizeT len ,
4349                                                         UInt ecu ) ) ;   4349                                                         UInt ecu ) ) ;
4350 extern void vgPlain_track_new_mem_stack_4(void ( __attribute__((__regparm__(1))) (*f))(Addr new_ESP ) ) ;   4350 extern void vgPlain_track_new_mem_stack_4(void ( __attribute__((__regparm__(1))) (*f))(Addr new_ESP ) ) ;
4351 extern void vgPlain_track_new_mem_stack_8(void ( __attribute__((__regparm__(1))) (*f))(Addr new_ESP ) ) ;   4351 extern void vgPlain_track_new_mem_stack_8(void ( __attribute__((__regparm__(1))) (*f))(Addr new_ESP ) ) ;
4352 extern void vgPlain_track_new_mem_stack_12(void ( __attribute__((__regparm__(1))) (*f))(Addr new_ESP ) ) ;   4352 extern void vgPlain_track_new_mem_stack_12(void ( __attribute__((__regparm__(1))) (*f))(Addr new_ESP ) ) ;
4353 extern void vgPlain_track_new_mem_stack_16(void ( __attribute__((__regparm__(1))) (*f))(Addr new_ESP ) ) ;   4353 extern void vgPlain_track_new_mem_stack_16(void ( __attribute__((__regparm__(1))) (*f))(Addr new_ESP ) ) ;
4354 extern void vgPlain_track_new_mem_stack_32(void ( __attribute__((__regparm__(1))) (*f))(Addr new_ESP ) ) ;   4354 extern void vgPlain_track_new_mem_stack_32(void ( __attribute__((__regparm__(1))) (*f))(Addr new_ESP ) ) ;
4355 extern void vgPlain_track_new_mem_stack_112(void ( __attribute__((__regparm__(1))) (*f))(Addr new_ESP ) ) ;   4355 extern void vgPlain_track_new_mem_stack_112(void ( __attribute__((__regparm__(1))) (*f))(Addr new_ESP ) ) ;
4356 extern void vgPlain_track_new_mem_stack_128(void ( __attribute__((__regparm__(1))) (*f))(Addr new_ESP ) ) ;   4356 extern void vgPlain_track_new_mem_stack_128(void ( __attribute__((__regparm__(1))) (*f))(Addr new_ESP ) ) ;
4357 extern void vgPlain_track_new_mem_stack_144(void ( __attribute__((__regparm__(1))) (*f))(Addr new_ESP ) ) ;   4357 extern void vgPlain_track_new_mem_stack_144(void ( __attribute__((__regparm__(1))) (*f))(Addr new_ESP ) ) ;
4358 extern void vgPlain_track_new_mem_stack_160(void ( __attribute__((__regparm__(1))) (*f))(Addr new_ESP ) ) ;   4358 extern void vgPlain_track_new_mem_stack_160(void ( __attribute__((__regparm__(1))) (*f))(Addr new_ESP ) ) ;
4359 extern void vgPlain_track_new_mem_stack(void (*f)(Addr a , SizeT len ) ) ;   4359 extern void vgPlain_track_new_mem_stack(void (*f)(Addr a , SizeT len ) ) ;
4360 extern void vgPlain_track_die_mem_stack_4(void ( __attribute__((__regparm__(1))) (*f))(Addr die_ESP ) ) ;   4360 extern void vgPlain_track_die_mem_stack_4(void ( __attribute__((__regparm__(1))) (*f))(Addr die_ESP ) ) ;
4361 extern void vgPlain_track_die_mem_stack_8(void ( __attribute__((__regparm__(1))) (*f))(Addr die_ESP ) ) ;   4361 extern void vgPlain_track_die_mem_stack_8(void ( __attribute__((__regparm__(1))) (*f))(Addr die_ESP ) ) ;
4362 extern void vgPlain_track_die_mem_stack_12(void ( __attribute__((__regparm__(1))) (*f))(Addr die_ESP ) ) ;   4362 extern void vgPlain_track_die_mem_stack_12(void ( __attribute__((__regparm__(1))) (*f))(Addr die_ESP ) ) ;
4363 extern void vgPlain_track_die_mem_stack_16(void ( __attribute__((__regparm__(1))) (*f))(Addr die_ESP ) ) ;   4363 extern void vgPlain_track_die_mem_stack_16(void ( __attribute__((__regparm__(1))) (*f))(Addr die_ESP ) ) ;
4364 extern void vgPlain_track_die_mem_stack_32(void ( __attribute__((__regparm__(1))) (*f))(Addr die_ESP ) ) ;   4364 extern void vgPlain_track_die_mem_stack_32(void ( __attribute__((__regparm__(1))) (*f))(Addr die_ESP ) ) ;
4365 extern void vgPlain_track_die_mem_stack_112(void ( __attribute__((__regparm__(1))) (*f))(Addr die_ESP ) ) ;   4365 extern void vgPlain_track_die_mem_stack_112(void ( __attribute__((__regparm__(1))) (*f))(Addr die_ESP ) ) ;
4366 extern void vgPlain_track_die_mem_stack_128(void ( __attribute__((__regparm__(1))) (*f))(Addr die_ESP ) ) ;   4366 extern void vgPlain_track_die_mem_stack_128(void ( __attribute__((__regparm__(1))) (*f))(Addr die_ESP ) ) ;
4367 extern void vgPlain_track_die_mem_stack_144(void ( __attribute__((__regparm__(1))) (*f))(Addr die_ESP ) ) ;   4367 extern void vgPlain_track_die_mem_stack_144(void ( __attribute__((__regparm__(1))) (*f))(Addr die_ESP ) ) ;
4368 extern void vgPlain_track_die_mem_stack_160(void ( __attribute__((__regparm__(1))) (*f))(Addr die_ESP ) ) ;   4368 extern void vgPlain_track_die_mem_stack_160(void ( __attribute__((__regparm__(1))) (*f))(Addr die_ESP ) ) ;
4369 extern void vgPlain_track_die_mem_stack(void (*f)(Addr a , SizeT len ) ) ;   4369 extern void vgPlain_track_die_mem_stack(void (*f)(Addr a , SizeT len ) ) ;
4370 extern void vgPlain_track_ban_mem_stack(void (*f)(Addr a , SizeT len ) ) ;   4370 extern void vgPlain_track_ban_mem_stack(void (*f)(Addr a , SizeT len ) ) ;
4371 extern void vgPlain_track_pre_mem_read(void (*f)(CorePart part , ThreadId tid ,   4371 extern void vgPlain_track_pre_mem_read(void (*f)(CorePart part , ThreadId tid ,
4372                                                  Char *s , Addr a , SizeT size ) ) ;   4372                                                  Char *s , Addr a , SizeT size ) ) ;
4373 extern void vgPlain_track_pre_mem_read_asciiz(void (*f)(CorePart part ,   4373 extern void vgPlain_track_pre_mem_read_asciiz(void (*f)(CorePart part ,
4374                                                         ThreadId tid , Char *s ,   4374                                                         ThreadId tid , Char *s ,
4375                                                         Addr a ) ) ;   4375                                                         Addr a ) ) ;
4376 extern void vgPlain_track_pre_mem_write(void (*f)(CorePart part , ThreadId tid ,   4376 extern void vgPlain_track_pre_mem_write(void (*f)(CorePart part , ThreadId tid ,
4377                                                   Char *s , Addr a , SizeT size ) ) ;   4377                                                   Char *s , Addr a , SizeT size ) ) ;
4378 extern void vgPlain_track_post_mem_write(void (*f)(CorePart part ,   4378 extern void vgPlain_track_post_mem_write(void (*f)(CorePart part ,
4379                                                    ThreadId tid , Addr a ,   4379                                                    ThreadId tid , Addr a ,
4380                                                    SizeT size ) ) ;   4380                                                    SizeT size ) ) ;
4381 extern void vgPlain_track_pre_reg_read(void (*f)(CorePart part , ThreadId tid ,   4381 extern void vgPlain_track_pre_reg_read(void (*f)(CorePart part , ThreadId tid ,
4382                                                  Char *s ,   4382                                                  Char *s ,
4383                                                  PtrdiffT guest_state_offset ,   4383                                                  PtrdiffT guest_state_offset ,
4384                                                  SizeT size ) ) ;   4384                                                  SizeT size ) ) ;
4385 extern void vgPlain_track_post_reg_write(void (*f)(CorePart part ,   4385 extern void vgPlain_track_post_reg_write(void (*f)(CorePart part ,
4386                                                    ThreadId tid ,   4386                                                    ThreadId tid ,
4387                                                    PtrdiffT guest_state_offset ,   4387                                                    PtrdiffT guest_state_offset ,
4388                                                    SizeT size ) ) ;   4388                                                    SizeT size ) ) ;
4389 extern void vgPlain_track_post_reg_write_clientcall_return(void (*f)(ThreadId tid ,   4389 extern void vgPlain_track_post_reg_write_clientcall_return(void (*f)(ThreadId tid ,
4390                                                                      PtrdiffT guest_state_offset ,   4390                                                                      PtrdiffT guest_state_offset ,
4391                                                                      SizeT size ,   4391                                                                      SizeT size ,
4392                                                                      Addr f ) ) ;   4392                                                                      Addr f ) ) ;
4393 extern void vgPlain_track_start_client_code(void (*f)(ThreadId tid ,   4393 extern void vgPlain_track_start_client_code(void (*f)(ThreadId tid ,
4394                                                       ULong blocks_dispatched ) ) ;   4394                                                       ULong blocks_dispatched ) ) ;
4395 extern void vgPlain_track_stop_client_code(void (*f)(ThreadId tid ,   4395 extern void vgPlain_track_stop_client_code(void (*f)(ThreadId tid ,
4396                                                      ULong blocks_dispatched ) ) ;   4396                                                      ULong blocks_dispatched ) ) ;
4397 extern void vgPlain_track_pre_thread_ll_create(void (*f)(ThreadId tid ,   4397 extern void vgPlain_track_pre_thread_ll_create(void (*f)(ThreadId tid ,
4398                                                          ThreadId child ) ) ;   4398                                                          ThreadId child ) ) ;
4399 extern void vgPlain_track_pre_thread_first_insn(void (*f)(ThreadId tid ) ) ;   4399 extern void vgPlain_track_pre_thread_first_insn(void (*f)(ThreadId tid ) ) ;
4400 extern void vgPlain_track_pre_thread_ll_exit(void (*f)(ThreadId tid ) ) ;   4400 extern void vgPlain_track_pre_thread_ll_exit(void (*f)(ThreadId tid ) ) ;
4401 extern void vgPlain_track_pre_deliver_signal(void (*f)(ThreadId tid ,   4401 extern void vgPlain_track_pre_deliver_signal(void (*f)(ThreadId tid ,
4402                                                        Int sigNo ,   4402                                                        Int sigNo ,
4403                                                        Bool alt_stack ) ) ;   4403                                                        Bool alt_stack ) ) ;
4404 extern void vgPlain_track_post_deliver_signal(void (*f)(ThreadId tid ,   4404 extern void vgPlain_track_post_deliver_signal(void (*f)(ThreadId tid ,
4405                                                         Int sigNo ) ) ;   4405                                                         Int sigNo ) ) ;
4406 extern VgDetails vgPlain_details ;   4406 extern VgDetails vgPlain_details ;
4407 extern VgNeeds vgPlain_needs ;   4407 extern VgNeeds vgPlain_needs ;
4408 extern VgToolInterface vgPlain_tdict ;   4408 extern VgToolInterface vgPlain_tdict ;
4409 extern Bool vgPlain_sanity_check_needs(Char **failmsg ) ;   4409 extern Bool vgPlain_sanity_check_needs(Char **failmsg ) ;
4410 Long vgPlain_free_queue_volume  =    (Long )0;   4410 Long vgPlain_free_queue_volume  =    (Long )0;
4411 Long vgPlain_free_queue_length  =    (Long )0;   4411 Long vgPlain_free_queue_length  =    (Long )0;
4412 static void cc_analyse_alloc_arena(ArenaId aid ) ;   4412 static void cc_analyse_alloc_arena(ArenaId aid ) ;
4413 static char *probably_your_fault  =    (char *)"This is probably caused by your program erroneously writing past the\nend of a heap block and corrupting heap metadata.  If you fix any\ninvalid writes reported by Memcheck, this assertion failure will\nprobably go away.  Please try that before reporting this as a bug.\n";   4413 static char *probably_your_fault  =    (char *)"This is probably caused by your program erroneously writing past the\nend of a heap block and corrupting heap metadata.  If you fix any\ninvalid writes reported by Memcheck, this assertion failure will\nprobably go away.  Please try that before reporting this as a bug.\n";
4414 __inline static SizeT mk_inuse_bszB(SizeT bszB )   4414 __inline static SizeT mk_inuse_bszB(SizeT bszB )
4415 {   4415 {
4416   long tmp ;   4416   long tmp ;
4417     4417  
4418   {   4418   {
4419   tmp = __builtin_expect((long )(! (! (bszB != 0UL))), 1L);   4419   tmp = __builtin_expect((long )(! (! (bszB != 0UL))), 1L);
4420   if (tmp) {   4420   if (tmp) {
4421     4421  
4422   } else {   4422   } else {
4423     vgPlain_assert_fail((Bool )1, (Char const   *)"bszB != 0",   4423     vgPlain_assert_fail((Bool )1, (Char const   *)"bszB != 0",
4424                         (Char const   *)"m_mallocfree.c", 256,   4424                         (Char const   *)"m_mallocfree.c", 256,
4425                         (Char const   *)"mk_inuse_bszB",   4425                         (Char const   *)"mk_inuse_bszB",
4426                         (HChar const   *)probably_your_fault);   4426                         (HChar const   *)probably_your_fault);
4427   }   4427   }
4428   return (bszB & 4294967294UL);   4428   return (bszB & 4294967294UL);
4429 }   4429 }
4430 }   4430 }
4431 __inline static SizeT mk_free_bszB(SizeT bszB )   4431 __inline static SizeT mk_free_bszB(SizeT bszB )
4432 {   4432 {
4433   long tmp ;   4433   long tmp ;
4434     4434  
4435   {   4435   {
4436   tmp = __builtin_expect((long )(! (! (bszB != 0UL))), 1L);   4436   tmp = __builtin_expect((long )(! (! (bszB != 0UL))), 1L);
4437   if (tmp) {   4437   if (tmp) {
4438     4438  
4439   } else {   4439   } else {
4440     vgPlain_assert_fail((Bool )1, (Char const   *)"bszB != 0",   4440     vgPlain_assert_fail((Bool )1, (Char const   *)"bszB != 0",
4441                         (Char const   *)"m_mallocfree.c", 262,   4441                         (Char const   *)"m_mallocfree.c", 262,
4442                         (Char const   *)"mk_free_bszB",   4442                         (Char const   *)"mk_free_bszB",
4443                         (HChar const   *)probably_your_fault);   4443                         (HChar const   *)probably_your_fault);
4444   }   4444   }
4445   return (bszB | 1UL);   4445   return (bszB | 1UL);
4446 }   4446 }
4447 }   4447 }
4448 __inline static SizeT mk_plain_bszB(SizeT bszB )   4448 __inline static SizeT mk_plain_bszB(SizeT bszB )
4449 {   4449 {
4450   long tmp ;   4450   long tmp ;
4451     4451  
4452   {   4452   {
4453   tmp = __builtin_expect((long )(! (! (bszB != 0UL))), 1L);   4453   tmp = __builtin_expect((long )(! (! (bszB != 0UL))), 1L);
4454   if (tmp) {   4454   if (tmp) {
4455     4455  
4456   } else {   4456   } else {
4457     vgPlain_assert_fail((Bool )1, (Char const   *)"bszB != 0",   4457     vgPlain_assert_fail((Bool )1, (Char const   *)"bszB != 0",
4458                         (Char const   *)"m_mallocfree.c", 268,   4458                         (Char const   *)"m_mallocfree.c", 268,
4459                         (Char const   *)"mk_plain_bszB",   4459                         (Char const   *)"mk_plain_bszB",
4460                         (HChar const   *)probably_your_fault);   4460                         (HChar const   *)probably_your_fault);
4461   }   4461   }
4462   return (bszB & 4294967294UL);   4462   return (bszB & 4294967294UL);
4463 }   4463 }
4464 }   4464 }
4465 static SizeT set_at_init_hp_overhead_szB  =    (SizeT )-1000000;   4465 static SizeT set_at_init_hp_overhead_szB  =    (SizeT )-1000000;
4466 __inline static SizeT get_bszB_as_is(Block *b )   4466 __inline static SizeT get_bszB_as_is(Block *b )
4467 {   4467 {
4468   UByte *b2 ;   4468   UByte *b2 ;
4469   SizeT bszB_lo ;   4469   SizeT bszB_lo ;
4470   SizeT bszB_hi ;   4470   SizeT bszB_hi ;
4471   SizeT tmp ;   4471   SizeT tmp ;
4472   long tmp___0 ;   4472   long tmp___0 ;
4473     4473  
4474   {   4474   {
4475   b2 = (UByte *)b;   4475   b2 = (UByte *)b;
4476   bszB_lo = *((SizeT *)(b2 + set_at_init_hp_overhead_szB));   4476   bszB_lo = *((SizeT *)(b2 + set_at_init_hp_overhead_szB));
4477   tmp = mk_plain_bszB(bszB_lo);   4477   tmp = mk_plain_bszB(bszB_lo);
4478   bszB_hi = *((SizeT *)(b2 + (tmp - (SizeT )sizeof(SizeT ))));   4478   bszB_hi = *((SizeT *)(b2 + (tmp - (SizeT )sizeof(SizeT ))));
4479   tmp___0 = __builtin_expect((long )(! (! (bszB_lo == bszB_hi))), 1L);   4479   tmp___0 = __builtin_expect((long )(! (! (bszB_lo == bszB_hi))), 1L);
4480   if (tmp___0) {   4480   if (tmp___0) {
4481     4481  
4482   } else {   4482   } else {
4483     vgPlain_assert_fail((Bool )1, (Char const   *)"bszB_lo == bszB_hi",   4483     vgPlain_assert_fail((Bool )1, (Char const   *)"bszB_lo == bszB_hi",
4484                         (Char const   *)"m_mallocfree.c", 290,   4484                         (Char const   *)"m_mallocfree.c", 290,
4485                         (Char const   *)"get_bszB_as_is",   4485                         (Char const   *)"get_bszB_as_is",
4486                         "Heap block lo/hi size mismatch: lo = %llu, hi = %llu.\n%s",   4486                         "Heap block lo/hi size mismatch: lo = %llu, hi = %llu.\n%s",
4487                         (ULong )bszB_lo, (ULong )bszB_hi, probably_your_fault);   4487                         (ULong )bszB_lo, (ULong )bszB_hi, probably_your_fault);
4488   }   4488   }
4489   return (bszB_lo);   4489   return (bszB_lo);
4490 }   4490 }
4491 }   4491 }
4492 __inline static SizeT get_bszB(Block *b )   4492 __inline static SizeT get_bszB(Block *b )
4493 {   4493 {
4494   SizeT tmp ;   4494   SizeT tmp ;
4495   SizeT tmp___0 ;   4495   SizeT tmp___0 ;
4496     4496  
4497   {   4497   {
4498   tmp = get_bszB_as_is(b);   4498   tmp = get_bszB_as_is(b);
4499   tmp___0 = mk_plain_bszB(tmp);   4499   tmp___0 = mk_plain_bszB(tmp);
4500   return (tmp___0);   4500   return (tmp___0);
4501 }   4501 }
4502 }   4502 }
4503 __inline static void set_bszB(Block *b , SizeT bszB )   4503 __inline static void set_bszB(Block *b , SizeT bszB )
4504 {   4504 {
4505   UByte *b2 ;   4505   UByte *b2 ;
4506   SizeT tmp ;   4506   SizeT tmp ;
4507     4507  
4508   {   4508   {
4509   b2 = (UByte *)b;   4509   b2 = (UByte *)b;
4510   *((SizeT *)(b2 + set_at_init_hp_overhead_szB)) = bszB;   4510   *((SizeT *)(b2 + set_at_init_hp_overhead_szB)) = bszB;
4511   tmp = mk_plain_bszB(bszB);   4511   tmp = mk_plain_bszB(bszB);
4512   *((SizeT *)(b2 + (tmp - (SizeT )sizeof(SizeT )))) = bszB;   4512   *((SizeT *)(b2 + (tmp - (SizeT )sizeof(SizeT )))) = bszB;
4513   return;   4513   return;
4514 }   4514 }
4515 }   4515 }
4516 __inline static Bool is_inuse_block(Block *b )   4516 __inline static Bool is_inuse_block(Block *b )
4517 {   4517 {
4518   SizeT bszB ;   4518   SizeT bszB ;
4519   SizeT tmp ;   4519   SizeT tmp ;
4520   long tmp___0 ;   4520   long tmp___0 ;
4521   int tmp___1 ;   4521   int tmp___1 ;
4522     4522  
4523   {   4523   {
4524   tmp = get_bszB_as_is(b);   4524   tmp = get_bszB_as_is(b);
4525   bszB = tmp;   4525   bszB = tmp;
4526   tmp___0 = __builtin_expect((long )(! (! (bszB != 0UL))), 1L);   4526   tmp___0 = __builtin_expect((long )(! (! (bszB != 0UL))), 1L);
4527   if (tmp___0) {   4527   if (tmp___0) {
4528     4528  
4529   } else {   4529   } else {
4530     vgPlain_assert_fail((Bool )1, (Char const   *)"bszB != 0",   4530     vgPlain_assert_fail((Bool )1, (Char const   *)"bszB != 0",
4531                         (Char const   *)"m_mallocfree.c", 317,   4531                         (Char const   *)"m_mallocfree.c", 317,
4532                         (Char const   *)"is_inuse_block",   4532                         (Char const   *)"is_inuse_block",
4533                         (HChar const   *)probably_your_fault);   4533                         (HChar const   *)probably_your_fault);
4534   }   4534   }
4535   if (0UL != (bszB & 1UL)) {   4535   if (0UL != (bszB & 1UL)) {
4536     tmp___1 = (int )((Bool )0);   4536     tmp___1 = (int )((Bool )0);
4537   } else {   4537   } else {
4538     tmp___1 = (int )((Bool )1);   4538     tmp___1 = (int )((Bool )1);
4539   }   4539   }
4540   return ((Bool )tmp___1);   4540   return ((Bool )tmp___1);
4541 }   4541 }
4542 }   4542 }
4543 __inline static SizeT overhead_szB_lo(Arena *a )   4543 __inline static SizeT overhead_szB_lo(Arena *a )
4544 {   4544 {
4545     4545  
4546     4546  
4547   {   4547   {
4548   return ((set_at_init_hp_overhead_szB + (SizeT )sizeof(SizeT )) + a->rz_szB);   4548   return ((set_at_init_hp_overhead_szB + (SizeT )sizeof(SizeT )) + a->rz_szB);
4549 }   4549 }
4550 }   4550 }
4551 __inline static SizeT overhead_szB_hi(Arena *a )   4551 __inline static SizeT overhead_szB_hi(Arena *a )
4552 {   4552 {
4553     4553  
4554     4554  
4555   {   4555   {
4556   return (a->rz_szB + (SizeT )sizeof(SizeT ));   4556   return (a->rz_szB + (SizeT )sizeof(SizeT ));
4557 }   4557 }
4558 }   4558 }
4559 __inline static SizeT overhead_szB(Arena *a )   4559 __inline static SizeT overhead_szB(Arena *a )
4560 {   4560 {
4561   SizeT tmp ;   4561   SizeT tmp ;
4562   SizeT tmp___0 ;   4562   SizeT tmp___0 ;
4563     4563  
4564   {   4564   {
4565   tmp = overhead_szB_lo(a);   4565   tmp = overhead_szB_lo(a);
4566   tmp___0 = overhead_szB_hi(a);   4566   tmp___0 = overhead_szB_hi(a);
4567   return (tmp + tmp___0);   4567   return (tmp + tmp___0);
4568 }   4568 }
4569 }   4569 }
4570 __inline static SizeT min_useful_bszB(Arena *a )   4570 __inline static SizeT min_useful_bszB(Arena *a )
4571 {   4571 {
4572   SizeT tmp ;   4572   SizeT tmp ;
4573     4573  
4574   {   4574   {
4575   tmp = overhead_szB(a);   4575   tmp = overhead_szB(a);
4576   return (tmp);   4576   return (tmp);
4577 }   4577 }
4578 }   4578 }
4579 __inline static SizeT pszB_to_bszB(Arena *a , SizeT pszB )   4579 __inline static SizeT pszB_to_bszB(Arena *a , SizeT pszB )
4580 {   4580 {
4581   SizeT tmp ;   4581   SizeT tmp ;
4582     4582  
4583   {   4583   {
4584   tmp = overhead_szB(a);   4584   tmp = overhead_szB(a);
4585   return (pszB + tmp);   4585   return (pszB + tmp);
4586 }   4586 }
4587 }   4587 }
4588 __inline static SizeT bszB_to_pszB(Arena *a , SizeT bszB )   4588 __inline static SizeT bszB_to_pszB(Arena *a , SizeT bszB )
4589 {   4589 {
4590   SizeT tmp ;   4590   SizeT tmp ;
4591   int tmp___0 ;   4591   int tmp___0 ;
4592   long tmp___1 ;   4592   long tmp___1 ;
4593   SizeT tmp___2 ;   4593   SizeT tmp___2 ;
4594     4594  
4595   {   4595   {
4596   tmp = overhead_szB(a);   4596   tmp = overhead_szB(a);
4597   if (bszB >= tmp) {   4597   if (bszB >= tmp) {
4598     tmp___0 = 1;   4598     tmp___0 = 1;
4599   } else {   4599   } else {
4600     tmp___0 = 0;   4600     tmp___0 = 0;
4601   }   4601   }
4602   tmp___1 = __builtin_expect((long )tmp___0, 1L);   4602   tmp___1 = __builtin_expect((long )tmp___0, 1L);
4603   if (tmp___1) {   4603   if (tmp___1) {
4604     4604  
4605   } else {   4605   } else {
4606     vgPlain_assert_fail((Bool )1, (Char const   *)"bszB >= overhead_szB(a)",   4606     vgPlain_assert_fail((Bool )1, (Char const   *)"bszB >= overhead_szB(a)",
4607                         (Char const   *)"m_mallocfree.c", 362,   4607                         (Char const   *)"m_mallocfree.c", 362,
4608                         (Char const   *)"bszB_to_pszB",   4608                         (Char const   *)"bszB_to_pszB",
4609                         (HChar const   *)probably_your_fault);   4609                         (HChar const   *)probably_your_fault);
4610   }   4610   }
4611   tmp___2 = overhead_szB(a);   4611   tmp___2 = overhead_szB(a);
4612   return (bszB - tmp___2);   4612   return (bszB - tmp___2);
4613 }   4613 }
4614 }   4614 }
4615 __inline static SizeT get_pszB(Arena *a , Block *b )   4615 __inline static SizeT get_pszB(Arena *a , Block *b )
4616 {   4616 {
4617   SizeT tmp ;   4617   SizeT tmp ;
4618   SizeT tmp___0 ;   4618   SizeT tmp___0 ;
4619     4619  
4620   {   4620   {
4621   tmp = get_bszB(b);   4621   tmp = get_bszB(b);
4622   tmp___0 = bszB_to_pszB(a, tmp);   4622   tmp___0 = bszB_to_pszB(a, tmp);
4623   return (tmp___0);   4623   return (tmp___0);
4624 }   4624 }
4625 }   4625 }
4626 __inline static UByte *get_block_payload(Arena *a , Block *b )   4626 __inline static UByte *get_block_payload(Arena *a , Block *b )
4627 {   4627 {
4628   UByte *b2 ;   4628   UByte *b2 ;
4629   SizeT tmp ;   4629   SizeT tmp ;
4630     4630  
4631   {   4631   {
4632   b2 = (UByte *)b;   4632   b2 = (UByte *)b;
4633   tmp = overhead_szB_lo(a);   4633   tmp = overhead_szB_lo(a);
4634   return (b2 + tmp);   4634   return (b2 + tmp);
4635 }   4635 }
4636 }   4636 }
4637 __inline static Block *get_payload_block(Arena *a , UByte *payload )   4637 __inline static Block *get_payload_block(Arena *a , UByte *payload )
4638 {   4638 {
4639   SizeT tmp ;   4639   SizeT tmp ;
4640     4640  
4641   {   4641   {
4642   tmp = overhead_szB_lo(a);   4642   tmp = overhead_szB_lo(a);
4643   return ((Block *)(payload + - tmp));   4643   return ((Block *)(payload + - tmp));
4644 }   4644 }
4645 }   4645 }
4646 __inline static void set_prev_b(Block *b , Block *prev_p )   4646 __inline static void set_prev_b(Block *b , Block *prev_p )
4647 {   4647 {
4648   UByte *b2 ;   4648   UByte *b2 ;
4649     4649  
4650   {   4650   {
4651   b2 = (UByte *)b;   4651   b2 = (UByte *)b;
4652   *((Block **)(b2 + (set_at_init_hp_overhead_szB + (SizeT )sizeof(SizeT )))) = prev_p;   4652   *((Block **)(b2 + (set_at_init_hp_overhead_szB + (SizeT )sizeof(SizeT )))) = prev_p;
4653   return;   4653   return;
4654 }   4654 }
4655 }   4655 }
4656 __inline static void set_next_b(Block *b , Block *next_p )   4656 __inline static void set_next_b(Block *b , Block *next_p )
4657 {   4657 {
4658   UByte *b2 ;   4658   UByte *b2 ;
4659   SizeT tmp ;   4659   SizeT tmp ;
4660     4660  
4661   {   4661   {
4662   b2 = (UByte *)b;   4662   b2 = (UByte *)b;
4663   tmp = get_bszB(b);   4663   tmp = get_bszB(b);
4664   *((Block **)(b2 + ((tmp - (SizeT )sizeof(SizeT )) - (SizeT )sizeof(void *)))) = next_p;   4664   *((Block **)(b2 + ((tmp - (SizeT )sizeof(SizeT )) - (SizeT )sizeof(void *)))) = next_p;
4665   return;   4665   return;
4666 }   4666 }
4667 }   4667 }
4668 __inline static Block *get_prev_b(Block *b )   4668 __inline static Block *get_prev_b(Block *b )
4669 {   4669 {
4670   UByte *b2 ;   4670   UByte *b2 ;
4671     4671  
4672   {   4672   {
4673   b2 = (UByte *)b;   4673   b2 = (UByte *)b;
4674   return (*((Block **)(b2 + (set_at_init_hp_overhead_szB + (SizeT )sizeof(SizeT )))));   4674   return (*((Block **)(b2 + (set_at_init_hp_overhead_szB + (SizeT )sizeof(SizeT )))));
4675 }   4675 }
4676 }   4676 }
4677 __inline static Block *get_next_b(Block *b )   4677 __inline static Block *get_next_b(Block *b )
4678 {   4678 {
4679   UByte *b2 ;   4679   UByte *b2 ;
4680   SizeT tmp ;   4680   SizeT tmp ;
4681     4681  
4682   {   4682   {
4683   b2 = (UByte *)b;   4683   b2 = (UByte *)b;
4684   tmp = get_bszB(b);   4684   tmp = get_bszB(b);
4685   return (*((Block **)(b2 + ((tmp - (SizeT )sizeof(SizeT )) - (SizeT )sizeof(void *)))));   4685   return (*((Block **)(b2 + ((tmp - (SizeT )sizeof(SizeT )) - (SizeT )sizeof(void *)))));
4686 }   4686 }
4687 }   4687 }
4688 __inline static void set_cc(Block *b , HChar *cc )   4688 __inline static void set_cc(Block *b , HChar *cc )
4689 {   4689 {
4690   UByte *b2 ;   4690   UByte *b2 ;
4691   long tmp ;   4691   long tmp ;
4692     4692  
4693   {   4693   {
4694   b2 = (UByte *)b;   4694   b2 = (UByte *)b;
4695   tmp = __builtin_expect((long )(! (! vgPlain_clo_profile_heap)), 1L);   4695   tmp = __builtin_expect((long )(! (! vgPlain_clo_profile_heap)), 1L);
4696   if (tmp) {   4696   if (tmp) {
4697     4697  
4698   } else {   4698   } else {
4699     vgPlain_assert_fail((Bool )1, (Char const   *)"VG_(clo_profile_heap)",   4699     vgPlain_assert_fail((Bool )1, (Char const   *)"VG_(clo_profile_heap)",
4700                         (Char const   *)"m_mallocfree.c", 426,   4700                         (Char const   *)"m_mallocfree.c", 426,
4701                         (Char const   *)"set_cc", "");   4701                         (Char const   *)"set_cc", "");
4702   }   4702   }
4703   *((HChar **)(b2 + 0)) = cc;   4703   *((HChar **)(b2 + 0)) = cc;
4704   return;   4704   return;
4705 }   4705 }
4706 }   4706 }
4707 __inline static HChar *get_cc(Block *b )   4707 __inline static HChar *get_cc(Block *b )
4708 {   4708 {
4709   UByte *b2 ;   4709   UByte *b2 ;
4710   long tmp ;   4710   long tmp ;
4711     4711  
4712   {   4712   {
4713   b2 = (UByte *)b;   4713   b2 = (UByte *)b;
4714   tmp = __builtin_expect((long )(! (! vgPlain_clo_profile_heap)), 1L);   4714   tmp = __builtin_expect((long )(! (! vgPlain_clo_profile_heap)), 1L);
4715   if (tmp) {   4715   if (tmp) {
4716     4716  
4717   } else {   4717   } else {
4718     vgPlain_assert_fail((Bool )1, (Char const   *)"VG_(clo_profile_heap)",   4718     vgPlain_assert_fail((Bool )1, (Char const   *)"VG_(clo_profile_heap)",
4719                         (Char const   *)"m_mallocfree.c", 433,   4719                         (Char const   *)"m_mallocfree.c", 433,
4720                         (Char const   *)"get_cc", "");   4720                         (Char const   *)"get_cc", "");
4721   }   4721   }
4722   return (*((HChar **)(b2 + 0)));   4722   return (*((HChar **)(b2 + 0)));
4723 }   4723 }
4724 }   4724 }
4725 __inline static Block *get_predecessor_block(Block *b )   4725 __inline static Block *get_predecessor_block(Block *b )
4726 {   4726 {
4727   UByte *b2 ;   4727   UByte *b2 ;
4728   SizeT bszB ;   4728   SizeT bszB ;
4729   SizeT tmp ;   4729   SizeT tmp ;
4730     4730  
4731   {   4731   {
4732   b2 = (UByte *)b;   4732   b2 = (UByte *)b;
4733   tmp = mk_plain_bszB(*((SizeT *)(b2 + - sizeof(SizeT ))));   4733   tmp = mk_plain_bszB(*((SizeT *)(b2 + - sizeof(SizeT ))));
4734   bszB = tmp;   4734   bszB = tmp;
4735   return ((Block *)(b2 + - bszB));   4735   return ((Block *)(b2 + - bszB));
4736 }   4736 }
4737 }   4737 }
4738 __inline static void set_rz_lo_byte(Block *b , UInt rz_byteno , UByte v )   4738 __inline static void set_rz_lo_byte(Block *b , UInt rz_byteno , UByte v )
4739 {   4739 {
4740   UByte *b2 ;   4740   UByte *b2 ;
4741     4741  
4742   {   4742   {
4743   b2 = (UByte *)b;   4743   b2 = (UByte *)b;
4744   *(b2 + ((set_at_init_hp_overhead_szB + (SizeT )sizeof(SizeT )) + (SizeT )rz_byteno)) = v;   4744   *(b2 + ((set_at_init_hp_overhead_szB + (SizeT )sizeof(SizeT )) + (SizeT )rz_byteno)) = v;
4745   return;   4745   return;
4746 }   4746 }
4747 }   4747 }
4748 __inline static void set_rz_hi_byte(Block *b , UInt rz_byteno , UByte v )   4748 __inline static void set_rz_hi_byte(Block *b , UInt rz_byteno , UByte v )
4749 {   4749 {
4750   UByte *b2 ;   4750   UByte *b2 ;
4751   SizeT tmp ;   4751   SizeT tmp ;
4752     4752  
4753   {   4753   {
4754   b2 = (UByte *)b;   4754   b2 = (UByte *)b;
4755   tmp = get_bszB(b);   4755   tmp = get_bszB(b);
4756   *(b2 + (((tmp - (SizeT )sizeof(SizeT )) - (SizeT )rz_byteno) - 1UL)) = v;   4756   *(b2 + (((tmp - (SizeT )sizeof(SizeT )) - (SizeT )rz_byteno) - 1UL)) = v;
4757   return;   4757   return;
4758 }   4758 }
4759 }   4759 }
4760 __inline static UByte get_rz_lo_byte(Block *b , UInt rz_byteno )   4760 __inline static UByte get_rz_lo_byte(Block *b , UInt rz_byteno )
4761 {   4761 {
4762   UByte *b2 ;   4762   UByte *b2 ;
4763     4763  
4764   {   4764   {
4765   b2 = (UByte *)b;   4765   b2 = (UByte *)b;
4766   return (*(b2 + ((set_at_init_hp_overhead_szB + (SizeT )sizeof(SizeT )) + (SizeT )rz_byteno)));   4766   return (*(b2 + ((set_at_init_hp_overhead_szB + (SizeT )sizeof(SizeT )) + (SizeT )rz_byteno)));
4767 }   4767 }
4768 }   4768 }
4769 __inline static UByte get_rz_hi_byte(Block *b , UInt rz_byteno )   4769 __inline static UByte get_rz_hi_byte(Block *b , UInt rz_byteno )
4770 {   4770 {
4771   UByte *b2 ;   4771   UByte *b2 ;
4772   SizeT tmp ;   4772   SizeT tmp ;
4773     4773  
4774   {   4774   {
4775   b2 = (UByte *)b;   4775   b2 = (UByte *)b;
4776   tmp = get_bszB(b);   4776   tmp = get_bszB(b);
4777   return (*(b2 + (((tmp - (SizeT )sizeof(SizeT )) - (SizeT )rz_byteno) - 1UL)));   4777   return (*(b2 + (((tmp - (SizeT )sizeof(SizeT )) - (SizeT )rz_byteno) - 1UL)));
4778 }   4778 }
4779 }   4779 }
4780 static Arena vg_arena[8]  ;   4780 static Arena vg_arena[8]  ;
4781 static Arena *arenaId_to_ArenaP(ArenaId arena )   4781 static Arena *arenaId_to_ArenaP(ArenaId arena )
4782 {   4782 {
4783   int tmp ;   4783   int tmp ;
4784   long tmp___0 ;   4784   long tmp___0 ;
4785     4785  
4786   {   4786   {
4787   if (arena >= 0) {   4787   if (arena >= 0) {
4788     if (arena < 8) {   4788     if (arena < 8) {
4789       tmp = 1;   4789       tmp = 1;
4790     } else {   4790     } else {
4791       tmp = 0;   4791       tmp = 0;
4792     }   4792     }
4793   } else {   4793   } else {
4794     tmp = 0;   4794     tmp = 0;
4795   }   4795   }
4796   tmp___0 = __builtin_expect((long )tmp, 1L);   4796   tmp___0 = __builtin_expect((long )tmp, 1L);
4797   if (tmp___0) {   4797   if (tmp___0) {
4798     4798  
4799   } else {   4799   } else {
4800     vgPlain_assert_fail((Bool )1,   4800     vgPlain_assert_fail((Bool )1,
4801                         (Char const   *)"arena >= 0 && arena < VG_N_ARENAS",   4801                         (Char const   *)"arena >= 0 && arena < VG_N_ARENAS",
4802                         (Char const   *)"m_mallocfree.c", 490,   4802                         (Char const   *)"m_mallocfree.c", 490,
4803                         (Char const   *)"arenaId_to_ArenaP", "");   4803                         (Char const   *)"arenaId_to_ArenaP", "");
4804   }   4804   }
4805   return (& vg_arena[arena]);   4805   return (& vg_arena[arena]);
4806 }   4806 }
4807 }   4807 }
4808 static void arena_init(ArenaId aid , Char *name , SizeT rz_szB ,   4808 static void arena_init(ArenaId aid , Char *name , SizeT rz_szB ,
4809                        SizeT min_sblock_szB , SizeT min_unsplittable_sblock_szB )   4809                        SizeT min_sblock_szB , SizeT min_unsplittable_sblock_szB )
4810 {   4810 {
4811   SizeT i ;   4811   SizeT i ;
4812   Arena *a ;   4812   Arena *a ;
4813   Arena *tmp ;   4813   Arena *tmp ;
4814   long tmp___0 ;   4814   long tmp___0 ;
4815   long tmp___1 ;   4815   long tmp___1 ;
4816   SizeT tmp___2 ;   4816   SizeT tmp___2 ;
4817   SizeT tmp___3 ;   4817   SizeT tmp___3 ;
4818   SizeT tmp___4 ;   4818   SizeT tmp___4 ;
4819   int tmp___5 ;   4819   int tmp___5 ;
4820   long tmp___6 ;   4820   long tmp___6 ;
4821   long tmp___7 ;   4821   long tmp___7 ;
4822     4822  
4823   {   4823   {
4824   tmp = arenaId_to_ArenaP(aid);   4824   tmp = arenaId_to_ArenaP(aid);
4825   a = tmp;   4825   a = tmp;
4826   tmp___0 = __builtin_expect((long )(! (! (rz_szB < 128UL))), 1L);   4826   tmp___0 = __builtin_expect((long )(! (! (rz_szB < 128UL))), 1L);
4827   if (tmp___0) {   4827   if (tmp___0) {
4828     4828  
4829   } else {   4829   } else {
4830     vgPlain_assert_fail((Bool )1, (Char const   *)"rz_szB < 128",   4830     vgPlain_assert_fail((Bool )1, (Char const   *)"rz_szB < 128",
4831                         (Char const   *)"m_mallocfree.c", 506,   4831                         (Char const   *)"m_mallocfree.c", 506,
4832                         (Char const   *)"arena_init", "");   4832                         (Char const   *)"arena_init", "");
4833   }   4833   }
4834   if (rz_szB < (SizeT )sizeof(void *)) {   4834   if (rz_szB < (SizeT )sizeof(void *)) {
4835     rz_szB = (SizeT )sizeof(void *);   4835     rz_szB = (SizeT )sizeof(void *);
4836   } else {   4836   } else {
4837     4837  
4838   }   4838   }
4839   tmp___1 = __builtin_expect((long )(! (! (min_sblock_szB % (1UL << 12) == 0UL))),   4839   tmp___1 = __builtin_expect((long )(! (! (min_sblock_szB % (1UL << 12) == 0UL))),
4840                              1L);   4840                              1L);
4841   if (tmp___1) {   4841   if (tmp___1) {
4842     4842  
4843   } else {   4843   } else {
4844     vgPlain_assert_fail((Bool )1,   4844     vgPlain_assert_fail((Bool )1,
4845                         (Char const   *)"(min_sblock_szB % VKI_PAGE_SIZE) == 0",   4845                         (Char const   *)"(min_sblock_szB % VKI_PAGE_SIZE) == 0",
4846                         (Char const   *)"m_mallocfree.c", 509,   4846                         (Char const   *)"m_mallocfree.c", 509,
4847                         (Char const   *)"arena_init", "");   4847                         (Char const   *)"arena_init", "");
4848   }   4848   }
4849   a->name = name;   4849   a->name = name;
4850   if (3 == aid) {   4850   if (3 == aid) {
4851     a->clientmem = (Bool )1;   4851     a->clientmem = (Bool )1;
4852   } else {   4852   } else {
4853     a->clientmem = (Bool )0;   4853     a->clientmem = (Bool )0;
4854   }   4854   }
4855   a->rz_szB = rz_szB;   4855   a->rz_szB = rz_szB;
4856   while (1) {   4856   while (1) {
4857     tmp___2 = overhead_szB_lo(a);   4857     tmp___2 = overhead_szB_lo(a);
4858     if (0UL != tmp___2 % 8UL) {   4858     if (0UL != tmp___2 % 8UL) {
4859     4859  
4860     } else {   4860     } else {
4861       break;   4861       break;
4862     }   4862     }
4863     (a->rz_szB) ++;   4863     (a->rz_szB) ++;
4864   }   4864   }
4865   tmp___3 = overhead_szB_lo(a);   4865   tmp___3 = overhead_szB_lo(a);
4866   tmp___4 = overhead_szB_hi(a);   4866   tmp___4 = overhead_szB_hi(a);
4867   if (tmp___3 - set_at_init_hp_overhead_szB == tmp___4) {   4867   if (tmp___3 - set_at_init_hp_overhead_szB == tmp___4) {
4868     tmp___5 = 1;   4868     tmp___5 = 1;
4869   } else {   4869   } else {
4870     tmp___5 = 0;   4870     tmp___5 = 0;
4871   }   4871   }
4872   tmp___6 = __builtin_expect((long )tmp___5, 1L);   4872   tmp___6 = __builtin_expect((long )tmp___5, 1L);
4873   if (tmp___6) {   4873   if (tmp___6) {
4874     4874  
4875   } else {   4875   } else {
4876     vgPlain_assert_fail((Bool )1,   4876     vgPlain_assert_fail((Bool )1,
4877                         (Char const   *)"overhead_szB_lo(a) - hp_overhead_szB() == overhead_szB_hi(a)",   4877                         (Char const   *)"overhead_szB_lo(a) - hp_overhead_szB() == overhead_szB_hi(a)",
4878                         (Char const   *)"m_mallocfree.c", 518,   4878                         (Char const   *)"m_mallocfree.c", 518,
4879                         (Char const   *)"arena_init", "");   4879                         (Char const   *)"arena_init", "");
4880   }   4880   }
4881   a->min_sblock_szB = min_sblock_szB;   4881   a->min_sblock_szB = min_sblock_szB;
4882   a->min_unsplittable_sblock_szB = min_unsplittable_sblock_szB;   4882   a->min_unsplittable_sblock_szB = min_unsplittable_sblock_szB;
4883   i = (SizeT )0;   4883   i = (SizeT )0;
4884   while (i < 112UL) {   4884   while (i < 112UL) {
4885     a->freelist[i] = (Block *)((void *)0);   4885     a->freelist[i] = (Block *)((void *)0);
4886     i ++;   4886     i ++;
4887   }   4887   }
    -+ 4888   {
      4889   memset(a, 0, sizeof(Arena ));
4888   a->sblocks = & a->sblocks_initial[0]; = 4890   a->sblocks = & a->sblocks_initial[0];
    -+ 4891   }
4889   a->sblocks_size = (SizeT )50; = 4892   a->sblocks_size = (SizeT )50;
4890   a->sblocks_used = (SizeT )0;   4893   a->sblocks_used = (SizeT )0;
4891   a->stats__nreclaim_unsplit = (ULong )0;   4894   a->stats__nreclaim_unsplit = (ULong )0;
4892   a->stats__nreclaim_split = (ULong )0;   4895   a->stats__nreclaim_split = (ULong )0;
4893   a->stats__bytes_on_loan = (SizeT )0;   4896   a->stats__bytes_on_loan = (SizeT )0;
4894   a->stats__bytes_mmaped = (SizeT )0;   4897   a->stats__bytes_mmaped = (SizeT )0;
4895   a->stats__bytes_on_loan_max = (SizeT )0;   4898   a->stats__bytes_on_loan_max = (SizeT )0;
4896   a->stats__bytes_mmaped_max = (SizeT )0;   4899   a->stats__bytes_mmaped_max = (SizeT )0;
4897   a->stats__tot_blocks = (ULong )0;   4900   a->stats__tot_blocks = (ULong )0;
4898   a->stats__tot_bytes = (ULong )0;   4901   a->stats__tot_bytes = (ULong )0;
4899   a->stats__nsearches = (ULong )0;   4902   a->stats__nsearches = (ULong )0;
4900   a->next_profile_at = (SizeT )25000000;   4903   a->next_profile_at = (SizeT )25000000;
4901   tmp___7 = __builtin_expect((long )(! (! (sizeof(a->sblocks_initial) == 50U * sizeof(Superblock *)))),   4904   tmp___7 = __builtin_expect((long )(! (! (sizeof(a->sblocks_initial) == 50U * sizeof(Superblock *)))),
4902                              1L);   4905                              1L);
4903   if (tmp___7) {   4906   if (tmp___7) {
4904     4907  
4905   } else {   4908   } else {
4906     vgPlain_assert_fail((Bool )1,   4909     vgPlain_assert_fail((Bool )1,
4907                         (Char const   *)"sizeof(a->sblocks_initial) == SBLOCKS_SIZE_INITIAL * sizeof(Superblock*)",   4910                         (Char const   *)"sizeof(a->sblocks_initial) == SBLOCKS_SIZE_INITIAL * sizeof(Superblock*)",
4908                         (Char const   *)"m_mallocfree.c", 538,   4911                         (Char const   *)"m_mallocfree.c", 538,
4909                         (Char const   *)"arena_init", "");   4912                         (Char const   *)"arena_init", "");
4910   }   4913   }
4911   return;   4914   return;
4912 }   4915 }
4913 }   4916 }
4914 void vgPlain_print_all_arena_stats(void)   4917 void vgPlain_print_all_arena_stats(void)
4915 {   4918 {
4916   UInt i ;   4919   UInt i ;
4917   Arena *a ;   4920   Arena *a ;
4918   Arena *tmp ;   4921   Arena *tmp ;
4919     4922  
4920   {   4923   {
4921   i = (UInt )0;   4924   i = (UInt )0;
4922   while (i < 8U) {   4925   while (i < 8U) {
4923     tmp = arenaId_to_ArenaP((ArenaId )i);   4926     tmp = arenaId_to_ArenaP((ArenaId )i);
4924     a = tmp;   4927     a = tmp;
4925     vgPlain_message((VgMsgKind )2,   4928     vgPlain_message((VgMsgKind )2,
4926                     "%8s: %8ld/%8ld  max/curr mmap\'d, %llu/%llu unsplit/split sb unmmap\'d,  %8ld/%8ld max/curr,  %10llu/%10llu totalloc-blocks/bytes,  %10llu searches\n",   4929                     "%8s: %8ld/%8ld  max/curr mmap\'d, %llu/%llu unsplit/split sb unmmap\'d,  %8ld/%8ld max/curr,  %10llu/%10llu totalloc-blocks/bytes,  %10llu searches\n",
4927                     a->name, a->stats__bytes_mmaped_max, a->stats__bytes_mmaped,   4930                     a->name, a->stats__bytes_mmaped_max, a->stats__bytes_mmaped,
4928                     a->stats__nreclaim_unsplit, a->stats__nreclaim_split,   4931                     a->stats__nreclaim_unsplit, a->stats__nreclaim_split,
4929                     a->stats__bytes_on_loan_max, a->stats__bytes_on_loan,   4932                     a->stats__bytes_on_loan_max, a->stats__bytes_on_loan,
4930                     a->stats__tot_blocks, a->stats__tot_bytes,   4933                     a->stats__tot_blocks, a->stats__tot_bytes,
4931                     a->stats__nsearches);   4934                     a->stats__nsearches);
4932     i ++;   4935     i ++;
4933   }   4936   }
4934   return;   4937   return;
4935 }   4938 }
4936 }   4939 }
4937 void vgPlain_print_arena_cc_analysis(void)   4940 void vgPlain_print_arena_cc_analysis(void)
4938 {   4941 {
4939   UInt i ;   4942   UInt i ;
4940   long tmp ;   4943   long tmp ;
4941     4944  
4942   {   4945   {
4943   tmp = __builtin_expect((long )(! (! vgPlain_clo_profile_heap)), 1L);   4946   tmp = __builtin_expect((long )(! (! vgPlain_clo_profile_heap)), 1L);
4944   if (tmp) {   4947   if (tmp) {
4945     4948  
4946   } else {   4949   } else {
4947     vgPlain_assert_fail((Bool )1, (Char const   *)"VG_(clo_profile_heap)",   4950     vgPlain_assert_fail((Bool )1, (Char const   *)"VG_(clo_profile_heap)",
4948                         (Char const   *)"m_mallocfree.c", 567,   4951                         (Char const   *)"m_mallocfree.c", 567,
4949                         (Char const   *)"vgPlain_print_arena_cc_analysis", "");   4952                         (Char const   *)"vgPlain_print_arena_cc_analysis", "");
4950   }   4953   }
4951   i = (UInt )0;   4954   i = (UInt )0;
4952   while (i < 8U) {   4955   while (i < 8U) {
4953     cc_analyse_alloc_arena((ArenaId )i);   4956     cc_analyse_alloc_arena((ArenaId )i);
4954     i ++;   4957     i ++;
4955   }   4958   }
4956   return;   4959   return;
4957 }   4960 }
4958 }   4961 }
4959 static Bool client_inited  =    (Bool )0;   4962 static Bool client_inited  =    (Bool )0;
4960 static Bool nonclient_inited  =    (Bool )0;   4963 static Bool nonclient_inited  =    (Bool )0;
4961 static void ensure_mm_init(ArenaId aid ) ;   4964 static void ensure_mm_init(ArenaId aid ) ;
4962 static SizeT client_rz_szB  =    (SizeT )8;   4965 static SizeT client_rz_szB  =    (SizeT )8;
4963 static void ensure_mm_init(ArenaId aid )   4966 static void ensure_mm_init(ArenaId aid )
4964 {   4967 {
4965   Int ar_client_sbszB ;   4968   Int ar_client_sbszB ;
4966   long tmp ;   4969   long tmp ;
4967     4970  
4968   {   4971   {
4969   if (3 == aid) {   4972   if (3 == aid) {
4970     if (client_inited) {   4973     if (client_inited) {
4971       if (vgPlain_needs.malloc_replacement) {   4974       if (vgPlain_needs.malloc_replacement) {
4972         tmp = __builtin_expect((long )(! (! (client_rz_szB == vgPlain_tdict.tool_client_redzone_szB))),   4975         tmp = __builtin_expect((long )(! (! (client_rz_szB == vgPlain_tdict.tool_client_redzone_szB))),
4973                                1L);   4976                                1L);
4974         if (tmp) {   4977         if (tmp) {
4975     4978  
4976         } else {   4979         } else {
4977           vgPlain_assert_fail((Bool )1,   4980           vgPlain_assert_fail((Bool )1,
4978                               (Char const   *)"client_rz_szB == VG_(tdict).tool_client_redzone_szB",   4981                               (Char const   *)"client_rz_szB == VG_(tdict).tool_client_redzone_szB",
4979                               (Char const   *)"m_mallocfree.c", 611,   4982                               (Char const   *)"m_mallocfree.c", 611,
4980                               (Char const   *)"ensure_mm_init", "");   4983                               (Char const   *)"ensure_mm_init", "");
4981         }   4984         }
4982       } else {   4985       } else {
4983     4986  
4984       }   4987       }
4985       return;   4988       return;
4986     } else {   4989     } else {
4987     4990  
4988     }   4991     }
4989     if (vgPlain_needs.malloc_replacement) {   4992     if (vgPlain_needs.malloc_replacement) {
4990       client_rz_szB = vgPlain_tdict.tool_client_redzone_szB;   4993       client_rz_szB = vgPlain_tdict.tool_client_redzone_szB;
4991       if (client_rz_szB > 128UL) {   4994       if (client_rz_szB > 128UL) {
4992         vgPlain_printf("\nTool error:\n  specified redzone size is too big (%llu)\n",   4995         vgPlain_printf("\nTool error:\n  specified redzone size is too big (%llu)\n",
4993                        (ULong )client_rz_szB);   4996                        (ULong )client_rz_szB);
4994         vgPlain_exit(1);   4997         vgPlain_exit(1);
4995       } else {   4998       } else {
4996     4999  
4997       }   5000       }
4998     } else {   5001     } else {
4999     5002  
5000     }   5003     }
5001     ar_client_sbszB = 4194304;   5004     ar_client_sbszB = 4194304;
5002     arena_init(3, (Char *)"client", client_rz_szB, (SizeT )ar_client_sbszB,   5005     arena_init(3, (Char *)"client", client_rz_szB, (SizeT )ar_client_sbszB,
5003                (SizeT )(ar_client_sbszB + 1));   5006                (SizeT )(ar_client_sbszB + 1));
5004     client_inited = (Bool )1;   5007     client_inited = (Bool )1;
5005   } else {   5008   } else {
5006     if (nonclient_inited) {   5009     if (nonclient_inited) {
5007       return;   5010       return;
5008     } else {   5011     } else {
5009     5012  
5010     }   5013     }
5011     if (vgPlain_clo_profile_heap) {   5014     if (vgPlain_clo_profile_heap) {
5012       set_at_init_hp_overhead_szB = (SizeT )8;   5015       set_at_init_hp_overhead_szB = (SizeT )8;
5013     } else {   5016     } else {
5014       set_at_init_hp_overhead_szB = (SizeT )0;   5017       set_at_init_hp_overhead_szB = (SizeT )0;
5015     }   5018     }
5016     arena_init(0, (Char *)"core", (SizeT )4, (SizeT )1048576, (SizeT )1048577);   5019     arena_init(0, (Char *)"core", (SizeT )4, (SizeT )1048576, (SizeT )1048577);
5017     arena_init(1, (Char *)"tool", (SizeT )4, (SizeT )4194304, (SizeT )4194305);   5020     arena_init(1, (Char *)"tool", (SizeT )4, (SizeT )4194304, (SizeT )4194305);
5018     arena_init(2, (Char *)"dinfo", (SizeT )4, (SizeT )1048576, (SizeT )1048577);   5021     arena_init(2, (Char *)"dinfo", (SizeT )4, (SizeT )1048576, (SizeT )1048577);
5019     arena_init(4, (Char *)"demangle", (SizeT )4, (SizeT )65536, (SizeT )65537);   5022     arena_init(4, (Char *)"demangle", (SizeT )4, (SizeT )65536, (SizeT )65537);
5020     arena_init(5, (Char *)"exectxt", (SizeT )4, (SizeT )1048576, (SizeT )1048577);   5023     arena_init(5, (Char *)"exectxt", (SizeT )4, (SizeT )1048576, (SizeT )1048577);
5021     arena_init(6, (Char *)"errors", (SizeT )4, (SizeT )65536, (SizeT )65537);   5024     arena_init(6, (Char *)"errors", (SizeT )4, (SizeT )65536, (SizeT )65537);
5022     arena_init(7, (Char *)"ttaux", (SizeT )4, (SizeT )65536, (SizeT )65537);   5025     arena_init(7, (Char *)"ttaux", (SizeT )4, (SizeT )65536, (SizeT )65537);
5023     nonclient_inited = (Bool )1;   5026     nonclient_inited = (Bool )1;
5024   }   5027   }
5025   return;   5028   return;
5026 }   5029 }
5027 }   5030 }
5028 __attribute__((__noreturn__)) void vgPlain_out_of_memory_NORETURN(HChar *who ,   5031 __attribute__((__noreturn__)) void vgPlain_out_of_memory_NORETURN(HChar *who ,
5029                                                                    SizeT szB ) ;   5032                                                                    SizeT szB ) ;
5030 static Bool alreadyCrashing  =    (Bool )0;   5033 static Bool alreadyCrashing  =    (Bool )0;
5031 __attribute__((__noreturn__)) void vgPlain_out_of_memory_NORETURN(HChar *who ,   5034 __attribute__((__noreturn__)) void vgPlain_out_of_memory_NORETURN(HChar *who ,
5032                                                                    SizeT szB ) ;   5035                                                                    SizeT szB ) ;
5033 void vgPlain_out_of_memory_NORETURN(HChar *who , SizeT szB )   5036 void vgPlain_out_of_memory_NORETURN(HChar *who , SizeT szB )
5034 {   5037 {
5035   ULong tot_alloc ;   5038   ULong tot_alloc ;
5036   ULong tmp ;   5039   ULong tmp ;
5037   Char *s1 ;   5040   Char *s1 ;
5038     5041  
5039   {   5042   {
5040   tmp = vgPlain_am_get_anonsize_total();   5043   tmp = vgPlain_am_get_anonsize_total();
5041   tot_alloc = tmp;   5044   tot_alloc = tmp;
5042   s1 = (Char *)"\n    Valgrind\'s memory management: out of memory:\n       %s\'s request for %llu bytes failed.\n       %llu bytes have already been allocated.\n    Valgrind cannot continue.  Sorry.\n\n    There are several possible reasons for this.\n    - You have some kind of memory limit in place.  Look at the\n      output of \'ulimit -a\'.  Is there a limit on the size of\n      virtual memory or address space?\n    - You have run out of swap space.\n    - Valgrind has a bug.  If you think this is the case or you are\n    not sure, please let us know and we\'ll try to fix it.\n    Please note that programs can take substantially more memory than\n    normal when running under Valgrind tools, eg. up to twice or\n    more, depending on the tool.  On a 64-bit machine, Valgrind\n    should be able to make use of up 32GB memory.  On a 32-bit\n    machine, Valgrind should be able to use all the memory available\n    to a single process, up to 4GB if that\'s how you have your\n    kernel configured.  Most 32-bit Linux setups allow a maximum of\n    3GB per process.\n\n    Whatever the reason, Valgrind cannot continue.  Sorry.\n";   5045   s1 = (Char *)"\n    Valgrind\'s memory management: out of memory:\n       %s\'s request for %llu bytes failed.\n       %llu bytes have already been allocated.\n    Valgrind cannot continue.  Sorry.\n\n    There are several possible reasons for this.\n    - You have some kind of memory limit in place.  Look at the\n      output of \'ulimit -a\'.  Is there a limit on the size of\n      virtual memory or address space?\n    - You have run out of swap space.\n    - Valgrind has a bug.  If you think this is the case or you are\n    not sure, please let us know and we\'ll try to fix it.\n    Please note that programs can take substantially more memory than\n    normal when running under Valgrind tools, eg. up to twice or\n    more, depending on the tool.  On a 64-bit machine, Valgrind\n    should be able to make use of up 32GB memory.  On a 32-bit\n    machine, Valgrind should be able to use all the memory available\n    to a single process, up to 4GB if that\'s how you have your\n    kernel configured.  Most 32-bit Linux setups allow a maximum of\n    3GB per process.\n\n    Whatever the reason, Valgrind cannot continue.  Sorry.\n";
5043   if (! alreadyCrashing) {   5046   if (! alreadyCrashing) {
5044     alreadyCrashing = (Bool )1;   5047     alreadyCrashing = (Bool )1;
5045     vgPlain_message((VgMsgKind )1, (HChar const   *)s1, who, (ULong )szB,   5048     vgPlain_message((VgMsgKind )1, (HChar const   *)s1, who, (ULong )szB,
5046                     tot_alloc);   5049                     tot_alloc);
5047   } else {   5050   } else {
5048     vgPlain_debugLog(0, "mallocfree", (HChar const   *)s1, who, (ULong )szB,   5051     vgPlain_debugLog(0, "mallocfree", (HChar const   *)s1, who, (ULong )szB,
5049                      tot_alloc);   5052                      tot_alloc);
5050   }   5053   }
5051   vgPlain_exit(1);   5054   vgPlain_exit(1);
5052 }   5055 }
5053 }   5056 }
5054 static void *align_upwards(void *p , SizeT align )   5057 static void *align_upwards(void *p , SizeT align )
5055 {   5058 {
5056   Addr a ;   5059   Addr a ;
5057     5060  
5058   {   5061   {
5059   a = (Addr )p;   5062   a = (Addr )p;
5060   if (a % align == 0UL) {   5063   if (a % align == 0UL) {
5061     return ((void *)a);   5064     return ((void *)a);
5062   } else {   5065   } else {
5063     5066  
5064   }   5067   }
5065   return ((void *)((a - a % align) + align));   5068   return ((void *)((a - a % align) + align));
5066 }   5069 }
5067 }   5070 }
5068 static void deferred_reclaimSuperblock(Arena *a , Superblock *sb ) ;   5071 static void deferred_reclaimSuperblock(Arena *a , Superblock *sb ) ;
5069 static Superblock *newSuperblock(Arena *a , SizeT cszB )   5072 static Superblock *newSuperblock(Arena *a , SizeT cszB )
5070 {   5073 {
5071   Superblock *sb ;   5074   Superblock *sb ;
5072   SysRes sres ;   5075   SysRes sres ;
5073   Bool unsplittable ;   5076   Bool unsplittable ;
5074   ArenaId aid ;   5077   ArenaId aid ;
5075   Arena *arena ;   5078   Arena *arena ;
5076   Arena *tmp ;   5079   Arena *tmp ;
5077   Bool tmp___0 ;   5080   Bool tmp___0 ;
5078   UWord tmp___1 ;   5081   UWord tmp___1 ;
5079   NSegment const   *tmp___2 ;   5082   NSegment const   *tmp___2 ;
5080   UWord tmp___3 ;   5083   UWord tmp___3 ;
5081   Bool tmp___4 ;   5084   Bool tmp___4 ;
5082   long tmp___5 ;   5085   long tmp___5 ;
5083   long tmp___6 ;   5086   long tmp___6 ;
5084   char const   *tmp___7 ;   5087   char const   *tmp___7 ;
5085   char const   *tmp___8 ;   5088   char const   *tmp___8 ;
5086     5089  
5087   {   5090   {
5088   aid = 0;   5091   aid = 0;
5089   while (aid < 8) {   5092   while (aid < 8) {
5090     tmp = arenaId_to_ArenaP(aid);   5093     tmp = arenaId_to_ArenaP(aid);
5091     arena = tmp;   5094     arena = tmp;
5092     if ((unsigned int )arena->deferred_reclaimed_sb != (unsigned int )((void *)0)) {   5095     if ((unsigned int )arena->deferred_reclaimed_sb != (unsigned int )((void *)0)) {
5093       deferred_reclaimSuperblock(arena, (Superblock *)((void *)0));   5096       deferred_reclaimSuperblock(arena, (Superblock *)((void *)0));
5094     } else {   5097     } else {
5095     5098  
5096     }   5099     }
5097     aid ++;   5100     aid ++;
5098   }   5101   }
5099   cszB += (SizeT )sizeof(Superblock );   5102   cszB += (SizeT )sizeof(Superblock );
5100   if (cszB < a->min_sblock_szB) {   5103   if (cszB < a->min_sblock_szB) {
5101     cszB = a->min_sblock_szB;   5104     cszB = a->min_sblock_szB;
5102   } else {   5105   } else {
5103     5106  
5104   }   5107   }
5105   cszB = ((cszB + (1UL << 12)) - 1UL) & ~ ((1UL << 12) - 1UL);   5108   cszB = ((cszB + (1UL << 12)) - 1UL) & ~ ((1UL << 12) - 1UL);
5106   if (cszB >= a->min_unsplittable_sblock_szB) {   5109   if (cszB >= a->min_unsplittable_sblock_szB) {
5107     unsplittable = (Bool )1;   5110     unsplittable = (Bool )1;
5108   } else {   5111   } else {
5109     unsplittable = (Bool )0;   5112     unsplittable = (Bool )0;
5110   }   5113   }
5111   if (a->clientmem) {   5114   if (a->clientmem) {
5112     if (unsplittable) {   5115     if (unsplittable) {
5113       sres = vgPlain_am_mmap_anon_float_client(cszB, 7);   5116       sres = vgPlain_am_mmap_anon_float_client(cszB, 7);
5114     } else {   5117     } else {
5115       sres = vgPlain_am_sbrk_anon_float_client(cszB, 7);   5118       sres = vgPlain_am_sbrk_anon_float_client(cszB, 7);
5116     }   5119     }
5117     tmp___0 = sr_isError(sres);   5120     tmp___0 = sr_isError(sres);
5118     if (tmp___0) {   5121     if (tmp___0) {
5119       return ((Superblock *)0);   5122       return ((Superblock *)0);
5120     } else {   5123     } else {
5121     5124  
5122     }   5125     }
5123     tmp___1 = sr_Res(sres);   5126     tmp___1 = sr_Res(sres);
5124     sb = (Superblock *)tmp___1;   5127     sb = (Superblock *)tmp___1;
5125     tmp___2 = vgPlain_am_find_nsegment((Addr )sb);   5128     tmp___2 = vgPlain_am_find_nsegment((Addr )sb);
5126     vgPlain_am_set_segment_isCH_if_SkAnonC((NSegment *)tmp___2);   5129     vgPlain_am_set_segment_isCH_if_SkAnonC((NSegment *)tmp___2);
5127   } else {   5130   } else {
5128     if (unsplittable) {   5131     if (unsplittable) {
5129       sres = vgPlain_am_mmap_anon_float_valgrind(cszB);   5132       sres = vgPlain_am_mmap_anon_float_valgrind(cszB);
5130     } else {   5133     } else {
5131       sres = vgPlain_am_sbrk_anon_float_valgrind(cszB);   5134       sres = vgPlain_am_sbrk_anon_float_valgrind(cszB);
5132     }   5135     }
5133     tmp___4 = sr_isError(sres);   5136     tmp___4 = sr_isError(sres);
5134     if (tmp___4) {   5137     if (tmp___4) {
5135       vgPlain_out_of_memory_NORETURN((HChar *)"newSuperblock", cszB);   5138       vgPlain_out_of_memory_NORETURN((HChar *)"newSuperblock", cszB);
5136       sb = (Superblock *)((void *)0);   5139       sb = (Superblock *)((void *)0);
5137     } else {   5140     } else {
5138       tmp___3 = sr_Res(sres);   5141       tmp___3 = sr_Res(sres);
5139       sb = (Superblock *)tmp___3;   5142       sb = (Superblock *)tmp___3;
5140     }   5143     }
5141   }   5144   }
5142   tmp___5 = __builtin_expect((long )(! (! ((unsigned int )((void *)0) != (unsigned int )sb))),   5145   tmp___5 = __builtin_expect((long )(! (! ((unsigned int )((void *)0) != (unsigned int )sb))),
5143                              1L);   5146                              1L);
5144   if (tmp___5) {   5147   if (tmp___5) {
5145     5148  
5146   } else {   5149   } else {
5147     vgPlain_assert_fail((Bool )1, (Char const   *)"NULL != sb",   5150     vgPlain_assert_fail((Bool )1, (Char const   *)"NULL != sb",
5148                         (Char const   *)"m_mallocfree.c", 780,   5151                         (Char const   *)"m_mallocfree.c", 780,
5149                         (Char const   *)"newSuperblock", "");   5152                         (Char const   *)"newSuperblock", "");
5150   }   5153   }
5151   while (1) {   5154   while (1) {
5152     break;   5155     break;
5153   }   5156   }
5154   tmp___6 = __builtin_expect((long )(! (! (0UL == (Addr )sb % 8UL))), 1L);   5157   tmp___6 = __builtin_expect((long )(! (! (0UL == (Addr )sb % 8UL))), 1L);
5155   if (tmp___6) {   5158   if (tmp___6) {
5156     5159  
5157   } else {   5160   } else {
5158     vgPlain_assert_fail((Bool )1,   5161     vgPlain_assert_fail((Bool )1,
5159                         (Char const   *)"0 == (Addr)sb % VG_MIN_MALLOC_SZB",   5162                         (Char const   *)"0 == (Addr)sb % VG_MIN_MALLOC_SZB",
5160                         (Char const   *)"m_mallocfree.c", 782,   5163                         (Char const   *)"m_mallocfree.c", 782,
5161                         (Char const   *)"newSuperblock", "");   5164                         (Char const   *)"newSuperblock", "");
5162   }   5165   }
5163   sb->n_payload_bytes = cszB - (SizeT )sizeof(Superblock );   5166   sb->n_payload_bytes = cszB - (SizeT )sizeof(Superblock );
5164   if (unsplittable) {   5167   if (unsplittable) {
5165     sb->unsplittable = sb;   5168     sb->unsplittable = sb;
5166   } else {   5169   } else {
5167     sb->unsplittable = (struct _Superblock *)((void *)0);   5170     sb->unsplittable = (struct _Superblock *)((void *)0);
5168   }   5171   }
5169   a->stats__bytes_mmaped += cszB;   5172   a->stats__bytes_mmaped += cszB;
5170   if (a->stats__bytes_mmaped > a->stats__bytes_mmaped_max) {   5173   if (a->stats__bytes_mmaped > a->stats__bytes_mmaped_max) {
5171     a->stats__bytes_mmaped_max = a->stats__bytes_mmaped;   5174     a->stats__bytes_mmaped_max = a->stats__bytes_mmaped;
5172   } else {   5175   } else {
5173     5176  
5174   }   5177   }
5175   if (a->clientmem) {   5178   if (a->clientmem) {
5176     tmp___7 = "CLIENT";   5179     tmp___7 = "CLIENT";
5177   } else {   5180   } else {
5178     tmp___7 = "VALGRIND";   5181     tmp___7 = "VALGRIND";
5179   }   5182   }
5180   if (unsplittable) {   5183   if (unsplittable) {
5181     tmp___8 = "unsplittable";   5184     tmp___8 = "unsplittable";
5182   } else {   5185   } else {
5183     tmp___8 = "";   5186     tmp___8 = "";
5184   }   5187   }
5185   vgPlain_debugLog(1, "mallocfree",   5188   vgPlain_debugLog(1, "mallocfree",
5186                    "newSuperblock at %p (pszB %7ld) %s owner %s/%s\n", sb,   5189                    "newSuperblock at %p (pszB %7ld) %s owner %s/%s\n", sb,
5187                    sb->n_payload_bytes, tmp___8, tmp___7, a->name);   5190                    sb->n_payload_bytes, tmp___8, tmp___7, a->name);
5188   return (sb);   5191   return (sb);
5189 }   5192 }
5190 }   5193 }
5191 static void reclaimSuperblock(Arena *a , Superblock *sb )   5194 static void reclaimSuperblock(Arena *a , Superblock *sb )
5192 {   5195 {
5193   SysRes sres ;   5196   SysRes sres ;
5194   SizeT cszB ;   5197   SizeT cszB ;
5195   UInt i ;   5198   UInt i ;
5196   UInt j ;   5199   UInt j ;
5197   char const   *tmp ;   5200   char const   *tmp ;
5198   char const   *tmp___0 ;   5201   char const   *tmp___0 ;
5199   int tmp___1 ;   5202   int tmp___1 ;
5200   long tmp___2 ;   5203   long tmp___2 ;
5201   Bool need_discard ;   5204   Bool need_discard ;
5202   Bool tmp___3 ;   5205   Bool tmp___3 ;
5203   int tmp___4 ;   5206   int tmp___4 ;
5204   long tmp___5 ;   5207   long tmp___5 ;
5205   Bool tmp___6 ;   5208   Bool tmp___6 ;
5206   int tmp___7 ;   5209   int tmp___7 ;
5207   long tmp___8 ;   5210   long tmp___8 ;
5208     5211  
5209   {   5212   {
5210   if (a->clientmem) {   5213   if (a->clientmem) {
5211     tmp = "CLIENT";   5214     tmp = "CLIENT";
5212   } else {   5215   } else {
5213     tmp = "VALGRIND";   5216     tmp = "VALGRIND";
5214   }   5217   }
5215   if (sb->unsplittable) {   5218   if (sb->unsplittable) {
5216     tmp___0 = "unsplittable";   5219     tmp___0 = "unsplittable";
5217   } else {   5220   } else {
5218     tmp___0 = "";   5221     tmp___0 = "";
5219   }   5222   }
5220   vgPlain_debugLog(1, "mallocfree",   5223   vgPlain_debugLog(1, "mallocfree",
5221                    "reclaimSuperblock at %p (pszB %7ld) %s owner %s/%s\n", sb,   5224                    "reclaimSuperblock at %p (pszB %7ld) %s owner %s/%s\n", sb,
5222                    sb->n_payload_bytes, tmp___0, tmp, a->name);   5225                    sb->n_payload_bytes, tmp___0, tmp, a->name);
5223   cszB = (SizeT )sizeof(Superblock ) + sb->n_payload_bytes;   5226   cszB = (SizeT )sizeof(Superblock ) + sb->n_payload_bytes;
5224   i = (UInt )0;   5227   i = (UInt )0;
5225   while ((SizeT )i < a->sblocks_used) {   5228   while ((SizeT )i < a->sblocks_used) {
5226     if ((unsigned int )*(a->sblocks + i) == (unsigned int )sb) {   5229     if ((unsigned int )*(a->sblocks + i) == (unsigned int )sb) {
5227       break;   5230       break;
5228     } else {   5231     } else {
5229     5232  
5230     }   5233     }
5231     i ++;   5234     i ++;
5232   }   5235   }
5233   if (i >= 0U) {   5236   if (i >= 0U) {
5234     if ((SizeT )i < a->sblocks_used) {   5237     if ((SizeT )i < a->sblocks_used) {
5235       tmp___1 = 1;   5238       tmp___1 = 1;
5236     } else {   5239     } else {
5237       tmp___1 = 0;   5240       tmp___1 = 0;
5238     }   5241     }
5239   } else {   5242   } else {
5240     tmp___1 = 0;   5243     tmp___1 = 0;
5241   }   5244   }
5242   tmp___2 = __builtin_expect((long )tmp___1, 1L);   5245   tmp___2 = __builtin_expect((long )tmp___1, 1L);
5243   if (tmp___2) {   5246   if (tmp___2) {
5244     5247  
5245   } else {   5248   } else {
5246     vgPlain_assert_fail((Bool )1,   5249     vgPlain_assert_fail((Bool )1,
5247                         (Char const   *)"i >= 0 && i < a->sblocks_used",   5250                         (Char const   *)"i >= 0 && i < a->sblocks_used",
5248                         (Char const   *)"m_mallocfree.c", 820,   5251                         (Char const   *)"m_mallocfree.c", 820,
5249                         (Char const   *)"reclaimSuperblock", "");   5252                         (Char const   *)"reclaimSuperblock", "");
5250   }   5253   }
5251   j = i;   5254   j = i;
5252   while ((SizeT )j < a->sblocks_used) {   5255   while ((SizeT )j < a->sblocks_used) {
5253     *(a->sblocks + j) = *(a->sblocks + (j + 1U));   5256     *(a->sblocks + j) = *(a->sblocks + (j + 1U));
5254     j ++;   5257     j ++;
5255   }   5258   }
5256   (a->sblocks_used) --;   5259   (a->sblocks_used) --;
5257   *(a->sblocks + a->sblocks_used) = (Superblock *)((void *)0);   5260   *(a->sblocks + a->sblocks_used) = (Superblock *)((void *)0);
5258   a->stats__bytes_mmaped -= cszB;   5261   a->stats__bytes_mmaped -= cszB;
5259   if (sb->unsplittable) {   5262   if (sb->unsplittable) {
5260     (a->stats__nreclaim_unsplit) ++;   5263     (a->stats__nreclaim_unsplit) ++;
5261   } else {   5264   } else {
5262     (a->stats__nreclaim_split) ++;   5265     (a->stats__nreclaim_split) ++;
5263   }   5266   }
5264   if (a->clientmem) {   5267   if (a->clientmem) {
5265     need_discard = (Bool )0;   5268     need_discard = (Bool )0;
5266     sres = vgPlain_am_munmap_client(& need_discard, (Addr )sb, cszB);   5269     sres = vgPlain_am_munmap_client(& need_discard, (Addr )sb, cszB);
5267     tmp___3 = sr_isError(sres);   5270     tmp___3 = sr_isError(sres);
5268     if (tmp___3) {   5271     if (tmp___3) {
5269       tmp___4 = 0;   5272       tmp___4 = 0;
5270     } else {   5273     } else {
5271       tmp___4 = 1;   5274       tmp___4 = 1;
5272     }   5275     }
5273     tmp___5 = __builtin_expect((long )tmp___4, 1L);   5276     tmp___5 = __builtin_expect((long )tmp___4, 1L);
5274     if (tmp___5) {   5277     if (tmp___5) {
5275     5278  
5276     } else {   5279     } else {
5277       vgPlain_assert_fail((Bool )1, (Char const   *)"! sr_isError(sres)",   5280       vgPlain_assert_fail((Bool )1, (Char const   *)"! sr_isError(sres)",
5278                           (Char const   *)"m_mallocfree.c", 838,   5281                           (Char const   *)"m_mallocfree.c", 838,
5279                           (Char const   *)"reclaimSuperblock",   5282                           (Char const   *)"reclaimSuperblock",
5280                           "superblock client munmap failure\n");   5283                           "superblock client munmap failure\n");
5281     }   5284     }
5282     if (need_discard) {   5285     if (need_discard) {
5283       vgPlain_discard_translations((Addr64 )((Addr )sb), (ULong )cszB,   5286       vgPlain_discard_translations((Addr64 )((Addr )sb), (ULong )cszB,
5284                                    (HChar *)"reclaimSuperblock");   5287                                    (HChar *)"reclaimSuperblock");
5285     } else {   5288     } else {
5286     5289  
5287     }   5290     }
5288   } else {   5291   } else {
5289     sres = vgPlain_am_munmap_valgrind((Addr )sb, cszB);   5292     sres = vgPlain_am_munmap_valgrind((Addr )sb, cszB);
5290     tmp___6 = sr_isError(sres);   5293     tmp___6 = sr_isError(sres);
5291     if (tmp___6) {   5294     if (tmp___6) {
5292       tmp___7 = 0;   5295       tmp___7 = 0;
5293     } else {   5296     } else {
5294       tmp___7 = 1;   5297       tmp___7 = 1;
5295     }   5298     }
5296     tmp___8 = __builtin_expect((long )tmp___7, 1L);   5299     tmp___8 = __builtin_expect((long )tmp___7, 1L);
5297     if (tmp___8) {   5300     if (tmp___8) {
5298     5301  
5299     } else {   5302     } else {
5300       vgPlain_assert_fail((Bool )1, (Char const   *)"! sr_isError(sres)",   5303       vgPlain_assert_fail((Bool )1, (Char const   *)"! sr_isError(sres)",
5301                           (Char const   *)"m_mallocfree.c", 853,   5304                           (Char const   *)"m_mallocfree.c", 853,
5302                           (Char const   *)"reclaimSuperblock",   5305                           (Char const   *)"reclaimSuperblock",
5303                           "superblock valgrind munmap failure\n");   5306                           "superblock valgrind munmap failure\n");
5304     }   5307     }
5305   }   5308   }
5306   return;   5309   return;
5307 }   5310 }
5308 }   5311 }
5309 static Superblock *findSb(Arena *a , Block *b )   5312 static Superblock *findSb(Arena *a , Block *b )
5310 {   5313 {
5311   SizeT min ;   5314   SizeT min ;
5312   SizeT max ;   5315   SizeT max ;
5313   Superblock *sb ;   5316   Superblock *sb ;
5314   SizeT pos ;   5317   SizeT pos ;
5315   int tmp ;   5318   int tmp ;
5316   long tmp___0 ;   5319   long tmp___0 ;
5317     5320  
5318   {   5321   {
5319   min = (SizeT )0;   5322   min = (SizeT )0;
5320   max = a->sblocks_used;   5323   max = a->sblocks_used;
5321   while (min <= max) {   5324   while (min <= max) {
5322     pos = min + (max - min) / 2UL;   5325     pos = min + (max - min) / 2UL;
5323     if (pos >= 0UL) {   5326     if (pos >= 0UL) {
5324       if (pos < a->sblocks_used) {   5327       if (pos < a->sblocks_used) {
5325         tmp = 1;   5328         tmp = 1;
5326       } else {   5329       } else {
5327         tmp = 0;   5330         tmp = 0;
5328       }   5331       }
5329     } else {   5332     } else {
5330       tmp = 0;   5333       tmp = 0;
5331     }   5334     }
5332     tmp___0 = __builtin_expect((long )tmp, 1L);   5335     tmp___0 = __builtin_expect((long )tmp, 1L);
5333     if (tmp___0) {   5336     if (tmp___0) {
5334     5337  
5335     } else {   5338     } else {
5336       vgPlain_assert_fail((Bool )1,   5339       vgPlain_assert_fail((Bool )1,
5337                           (Char const   *)"pos >= 0 && pos < a->sblocks_used",   5340                           (Char const   *)"pos >= 0 && pos < a->sblocks_used",
5338                           (Char const   *)"m_mallocfree.c", 869,   5341                           (Char const   *)"m_mallocfree.c", 869,
5339                           (Char const   *)"findSb", "");   5342                           (Char const   *)"findSb", "");
5340     }   5343     }
5341     sb = *(a->sblocks + pos);   5344     sb = *(a->sblocks + pos);
5342     if ((unsigned int )((Block *)(& sb->payload_bytes[0])) <= (unsigned int )b) {   5345     if ((unsigned int )((Block *)(& sb->payload_bytes[0])) <= (unsigned int )b) {
5343       if ((unsigned int )b < (unsigned int )((Block *)(& sb->payload_bytes[sb->n_payload_bytes]))) {   5346       if ((unsigned int )b < (unsigned int )((Block *)(& sb->payload_bytes[sb->n_payload_bytes]))) {
5344         return (sb);   5347         return (sb);
5345       } else {   5348       } else {
5346         goto _L;   5349         goto _L;
5347       }   5350       }
5348     } else   5351     } else
5349     _L: /* CIL Label */   5352     _L: /* CIL Label */
5350     if ((unsigned int )((Block *)(& sb->payload_bytes[0])) <= (unsigned int )b) {   5353     if ((unsigned int )((Block *)(& sb->payload_bytes[0])) <= (unsigned int )b) {
5351       min = pos + 1UL;   5354       min = pos + 1UL;
5352     } else {   5355     } else {
5353       max = pos - 1UL;   5356       max = pos - 1UL;
5354     }   5357     }
5355   }   5358   }
5356   vgPlain_printf("findSb: can\'t find pointer %p in arena \'%s\'\n", b, a->name);   5359   vgPlain_printf("findSb: can\'t find pointer %p in arena \'%s\'\n", b, a->name);
5357   vgPlain_core_panic((Char *)"findSb: VG_(arena_free)() in wrong arena?");   5360   vgPlain_core_panic((Char *)"findSb: VG_(arena_free)() in wrong arena?");
5358   return ((Superblock *)((void *)0));   5361   return ((Superblock *)((void *)0));
5359 }   5362 }
5360 }   5363 }
5361 static UInt pszB_to_listNo(SizeT pszB )   5364 static UInt pszB_to_listNo(SizeT pszB )
5362 {   5365 {
5363   SizeT n ;   5366   SizeT n ;
5364   long tmp ;   5367   long tmp ;
5365     5368  
5366   {   5369   {
5367   n = pszB / 8UL;   5370   n = pszB / 8UL;
5368   tmp = __builtin_expect((long )(! (! (0UL == pszB % 8UL))), 1L);   5371   tmp = __builtin_expect((long )(! (! (0UL == pszB % 8UL))), 1L);
5369   if (tmp) {   5372   if (tmp) {
5370     5373  
5371   } else {   5374   } else {
5372     vgPlain_assert_fail((Bool )1,   5375     vgPlain_assert_fail((Bool )1,
5373                         (Char const   *)"0 == pszB % VG_MIN_MALLOC_SZB",   5376                         (Char const   *)"0 == pszB % VG_MIN_MALLOC_SZB",
5374                         (Char const   *)"m_mallocfree.c", 900,   5377                         (Char const   *)"m_mallocfree.c", 900,
5375                         (Char const   *)"pszB_to_listNo", "");   5378                         (Char const   *)"pszB_to_listNo", "");
5376   }   5379   }
5377   if (n < 64UL) {   5380   if (n < 64UL) {
5378     return ((UInt )n);   5381     return ((UInt )n);
5379   } else {   5382   } else {
5380     5383  
5381   }   5384   }
5382   if (n < 67UL) {   5385   if (n < 67UL) {
5383     return ((UInt )64);   5386     return ((UInt )64);
5384   } else {   5387   } else {
5385     5388  
5386   }   5389   }
5387   if (n < 70UL) {   5390   if (n < 70UL) {
5388     return ((UInt )65);   5391     return ((UInt )65);
5389   } else {   5392   } else {
5390     5393  
5391   }   5394   }
5392   if (n < 74UL) {   5395   if (n < 74UL) {
5393     return ((UInt )66);   5396     return ((UInt )66);
5394   } else {   5397   } else {
5395     5398  
5396   }   5399   }
5397   if (n < 77UL) {   5400   if (n < 77UL) {
5398     return ((UInt )67);   5401     return ((UInt )67);
5399   } else {   5402   } else {
5400     5403  
5401   }   5404   }
5402   if (n < 81UL) {   5405   if (n < 81UL) {
5403     return ((UInt )68);   5406     return ((UInt )68);
5404   } else {   5407   } else {
5405     5408  
5406   }   5409   }
5407   if (n < 85UL) {   5410   if (n < 85UL) {
5408     return ((UInt )69);   5411     return ((UInt )69);
5409   } else {   5412   } else {
5410     5413  
5411   }   5414   }
5412   if (n < 90UL) {   5415   if (n < 90UL) {
5413     return ((UInt )70);   5416     return ((UInt )70);
5414   } else {   5417   } else {
5415     5418  
5416   }   5419   }
5417   if (n < 94UL) {   5420   if (n < 94UL) {
5418     return ((UInt )71);   5421     return ((UInt )71);
5419   } else {   5422   } else {
5420     5423  
5421   }   5424   }
5422   if (n < 99UL) {   5425   if (n < 99UL) {
5423     return ((UInt )72);   5426     return ((UInt )72);
5424   } else {   5427   } else {
5425     5428  
5426   }   5429   }
5427   if (n < 104UL) {   5430   if (n < 104UL) {
5428     return ((UInt )73);   5431     return ((UInt )73);
5429   } else {   5432   } else {
5430     5433  
5431   }   5434   }
5432   if (n < 109UL) {   5435   if (n < 109UL) {
5433     return ((UInt )74);   5436     return ((UInt )74);
5434   } else {   5437   } else {
5435     5438  
5436   }   5439   }
5437   if (n < 114UL) {   5440   if (n < 114UL) {
5438     return ((UInt )75);   5441     return ((UInt )75);
5439   } else {   5442   } else {
5440     5443  
5441   }   5444   }
5442   if (n < 120UL) {   5445   if (n < 120UL) {
5443     return ((UInt )76);   5446     return ((UInt )76);
5444   } else {   5447   } else {
5445     5448  
5446   }   5449   }
5447   if (n < 126UL) {   5450   if (n < 126UL) {
5448     return ((UInt )77);   5451     return ((UInt )77);
5449   } else {   5452   } else {
5450     5453  
5451   }   5454   }
5452   if (n < 133UL) {   5455   if (n < 133UL) {
5453     return ((UInt )78);   5456     return ((UInt )78);
5454   } else {   5457   } else {
5455     5458  
5456   }   5459   }
5457   if (n < 139UL) {   5460   if (n < 139UL) {
5458     return ((UInt )79);   5461     return ((UInt )79);
5459   } else {   5462   } else {
5460     5463  
5461   }   5464   }
5462   if (n < 153UL) {   5465   if (n < 153UL) {
5463     return ((UInt )80);   5466     return ((UInt )80);
5464   } else {   5467   } else {
5465     5468  
5466   }   5469   }
5467   if (n < 169UL) {   5470   if (n < 169UL) {
5468     return ((UInt )81);   5471     return ((UInt )81);
5469   } else {   5472   } else {
5470     5473  
5471   }   5474   }
5472   if (n < 185UL) {   5475   if (n < 185UL) {
5473     return ((UInt )82);   5476     return ((UInt )82);
5474   } else {   5477   } else {
5475     5478  
5476   }   5479   }
5477   if (n < 204UL) {   5480   if (n < 204UL) {
5478     return ((UInt )83);   5481     return ((UInt )83);
5479   } else {   5482   } else {
5480     5483  
5481   }   5484   }
5482   if (n < 224UL) {   5485   if (n < 224UL) {
5483     return ((UInt )84);   5486     return ((UInt )84);
5484   } else {   5487   } else {
5485     5488  
5486   }   5489   }
5487   if (n < 247UL) {   5490   if (n < 247UL) {
5488     return ((UInt )85);   5491     return ((UInt )85);
5489   } else {   5492   } else {
5490     5493  
5491   }   5494   }
5492   if (n < 272UL) {   5495   if (n < 272UL) {
5493     return ((UInt )86);   5496     return ((UInt )86);
5494   } else {   5497   } else {
5495     5498  
5496   }   5499   }
5497   if (n < 299UL) {   5500   if (n < 299UL) {
5498     return ((UInt )87);   5501     return ((UInt )87);
5499   } else {   5502   } else {
5500     5503  
5501   }   5504   }
5502   if (n < 329UL) {   5505   if (n < 329UL) {
5503     return ((UInt )88);   5506     return ((UInt )88);
5504   } else {   5507   } else {
5505     5508  
5506   }   5509   }
5507   if (n < 362UL) {   5510   if (n < 362UL) {
5508     return ((UInt )89);   5511     return ((UInt )89);
5509   } else {   5512   } else {
5510     5513  
5511   }   5514   }
5512   if (n < 398UL) {   5515   if (n < 398UL) {
5513     return ((UInt )90);   5516     return ((UInt )90);
5514   } else {   5517   } else {
5515     5518  
5516   }   5519   }
5517   if (n < 438UL) {   5520   if (n < 438UL) {
5518     return ((UInt )91);   5521     return ((UInt )91);
5519   } else {   5522   } else {
5520     5523  
5521   }   5524   }
5522   if (n < 482UL) {   5525   if (n < 482UL) {
5523     return ((UInt )92);   5526     return ((UInt )92);
5524   } else {   5527   } else {
5525     5528  
5526   }   5529   }
5527   if (n < 530UL) {   5530   if (n < 530UL) {
5528     return ((UInt )93);   5531     return ((UInt )93);
5529   } else {   5532   } else {
5530     5533  
5531   }   5534   }
5532   if (n < 583UL) {   5535   if (n < 583UL) {
5533     return ((UInt )94);   5536     return ((UInt )94);
5534   } else {   5537   } else {
5535     5538  
5536   }   5539   }
5537   if (n < 641UL) {   5540   if (n < 641UL) {
5538     return ((UInt )95);   5541     return ((UInt )95);
5539   } else {   5542   } else {
5540     5543  
5541   }   5544   }
5542   if (n < 770UL) {   5545   if (n < 770UL) {
5543     return ((UInt )96);   5546     return ((UInt )96);
5544   } else {   5547   } else {
5545     5548  
5546   }   5549   }
5547   if (n < 924UL) {   5550   if (n < 924UL) {
5548     return ((UInt )97);   5551     return ((UInt )97);
5549   } else {   5552   } else {
5550     5553  
5551   }   5554   }
5552   if (n < 1109UL) {   5555   if (n < 1109UL) {
5553     return ((UInt )98);   5556     return ((UInt )98);
5554   } else {   5557   } else {
5555     5558  
5556   }   5559   }
5557   if (n < 1331UL) {   5560   if (n < 1331UL) {
5558     return ((UInt )99);   5561     return ((UInt )99);
5559   } else {   5562   } else {
5560     5563  
5561   }   5564   }
5562   if (n < 1597UL) {   5565   if (n < 1597UL) {
5563     return ((UInt )100);   5566     return ((UInt )100);
5564   } else {   5567   } else {
5565     5568  
5566   }   5569   }
5567   if (n < 1916UL) {   5570   if (n < 1916UL) {
5568     return ((UInt )101);   5571     return ((UInt )101);
5569   } else {   5572   } else {
5570     5573  
5571   }   5574   }
5572   if (n < 2300UL) {   5575   if (n < 2300UL) {
5573     return ((UInt )102);   5576     return ((UInt )102);
5574   } else {   5577   } else {
5575     5578  
5576   }   5579   }
5577   if (n < 2760UL) {   5580   if (n < 2760UL) {
5578     return ((UInt )103);   5581     return ((UInt )103);
5579   } else {   5582   } else {
5580     5583  
5581   }   5584   }
5582   if (n < 3312UL) {   5585   if (n < 3312UL) {
5583     return ((UInt )104);   5586     return ((UInt )104);
5584   } else {   5587   } else {
5585     5588  
5586   }   5589   }
5587   if (n < 3974UL) {   5590   if (n < 3974UL) {
5588     return ((UInt )105);   5591     return ((UInt )105);
5589   } else {   5592   } else {
5590     5593  
5591   }   5594   }
5592   if (n < 4769UL) {   5595   if (n < 4769UL) {
5593     return ((UInt )106);   5596     return ((UInt )106);
5594   } else {   5597   } else {
5595     5598  
5596   }   5599   }
5597   if (n < 5723UL) {   5600   if (n < 5723UL) {
5598     return ((UInt )107);   5601     return ((UInt )107);
5599   } else {   5602   } else {
5600     5603  
5601   }   5604   }
5602   if (n < 6868UL) {   5605   if (n < 6868UL) {
5603     return ((UInt )108);   5606     return ((UInt )108);
5604   } else {   5607   } else {
5605     5608  
5606   }   5609   }
5607   if (n < 8241UL) {   5610   if (n < 8241UL) {
5608     return ((UInt )109);   5611     return ((UInt )109);
5609   } else {   5612   } else {
5610     5613  
5611   }   5614   }
5612   if (n < 9890UL) {   5615   if (n < 9890UL) {
5613     return ((UInt )110);   5616     return ((UInt )110);
5614   } else {   5617   } else {
5615     5618  
5616   }   5619   }
5617   return ((UInt )111);   5620   return ((UInt )111);
5618 }   5621 }
5619 }   5622 }
5620 static SizeT cache[112]  ;   5623 static SizeT cache[112]  ;
5621 static SizeT listNo_to_pszB_min(UInt listNo ) ;   5624 static SizeT listNo_to_pszB_min(UInt listNo ) ;
5622 static Bool cache_valid  =    (Bool )0;   5625 static Bool cache_valid  =    (Bool )0;
5623 static SizeT listNo_to_pszB_min(UInt listNo )   5626 static SizeT listNo_to_pszB_min(UInt listNo )
5624 {   5627 {
5625   UInt i ;   5628   UInt i ;
5626   SizeT pszB ;   5629   SizeT pszB ;
5627   UInt tmp ;   5630   UInt tmp ;
5628   long tmp___0 ;   5631   long tmp___0 ;
5629     5632  
5630   {   5633   {
5631   if (! cache_valid) {   5634   if (! cache_valid) {
5632     i = (UInt )0;   5635     i = (UInt )0;
5633     while (i < 112U) {   5636     while (i < 112U) {
5634       pszB = (SizeT )0;   5637       pszB = (SizeT )0;
5635       while (1) {   5638       while (1) {
5636         tmp = pszB_to_listNo(pszB);   5639         tmp = pszB_to_listNo(pszB);
5637         if (tmp < i) {   5640         if (tmp < i) {
5638     5641  
5639         } else {   5642         } else {
5640           break;   5643           break;
5641         }   5644         }
5642         pszB += 8UL;   5645         pszB += 8UL;
5643       }   5646       }
5644       cache[i] = pszB;   5647       cache[i] = pszB;
5645       i ++;   5648       i ++;
5646     }   5649     }
5647     cache_valid = (Bool )1;   5650     cache_valid = (Bool )1;
5648   } else {   5651   } else {
5649     5652  
5650   }   5653   }
5651   tmp___0 = __builtin_expect((long )(! (! (listNo <= 112U))), 1L);   5654   tmp___0 = __builtin_expect((long )(! (! (listNo <= 112U))), 1L);
5652   if (tmp___0) {   5655   if (tmp___0) {
5653     5656  
5654   } else {   5657   } else {
5655     vgPlain_assert_fail((Bool )1, (Char const   *)"listNo <= N_MALLOC_LISTS",   5658     vgPlain_assert_fail((Bool )1, (Char const   *)"listNo <= N_MALLOC_LISTS",
5656                         (Char const   *)"m_mallocfree.c", 978,   5659                         (Char const   *)"m_mallocfree.c", 978,
5657                         (Char const   *)"listNo_to_pszB_min", "");   5660                         (Char const   *)"listNo_to_pszB_min", "");
5658   }   5661   }
5659   return (cache[listNo]);   5662   return (cache[listNo]);
5660 }   5663 }
5661 }   5664 }
5662 static SizeT listNo_to_pszB_max(UInt listNo )   5665 static SizeT listNo_to_pszB_max(UInt listNo )
5663 {   5666 {
5664   long tmp ;   5667   long tmp ;
5665   SizeT tmp___0 ;   5668   SizeT tmp___0 ;
5666     5669  
5667   {   5670   {
5668   tmp = __builtin_expect((long )(! (! (listNo <= 112U))), 1L);   5671   tmp = __builtin_expect((long )(! (! (listNo <= 112U))), 1L);
5669   if (tmp) {   5672   if (tmp) {
5670     5673  
5671   } else {   5674   } else {
5672     vgPlain_assert_fail((Bool )1, (Char const   *)"listNo <= N_MALLOC_LISTS",   5675     vgPlain_assert_fail((Bool )1, (Char const   *)"listNo <= N_MALLOC_LISTS",
5673                         (Char const   *)"m_mallocfree.c", 986,   5676                         (Char const   *)"m_mallocfree.c", 986,
5674                         (Char const   *)"listNo_to_pszB_max", "");   5677                         (Char const   *)"listNo_to_pszB_max", "");
5675   }   5678   }
5676   if (listNo == 111U) {   5679   if (listNo == 111U) {
5677     return (~ ((SizeT )0));   5680     return (~ ((SizeT )0));
5678   } else {   5681   } else {
5679     tmp___0 = listNo_to_pszB_min(listNo + 1U);   5682     tmp___0 = listNo_to_pszB_min(listNo + 1U);
5680     return (tmp___0 - 1UL);   5683     return (tmp___0 - 1UL);
5681   }   5684   }
5682 }   5685 }
5683 }   5686 }
5684 static void swizzle(Arena *a , UInt lno )   5687 static void swizzle(Arena *a , UInt lno )
5685 {   5688 {
5686   Block *p_best ;   5689   Block *p_best ;
5687   Block *pp ;   5690   Block *pp ;
5688   Block *pn ;   5691   Block *pn ;
5689   UInt i ;   5692   UInt i ;
5690     5693  
5691   {   5694   {
5692   p_best = a->freelist[lno];   5695   p_best = a->freelist[lno];
5693   if ((unsigned int )p_best == (unsigned int )((void *)0)) {   5696   if ((unsigned int )p_best == (unsigned int )((void *)0)) {
5694     return;   5697     return;
5695   } else {   5698   } else {
5696     5699  
5697   }   5700   }
5698   pp = p_best;   5701   pp = p_best;
5699   pn = pp;   5702   pn = pp;
5700   i = (UInt )0;   5703   i = (UInt )0;
5701   while (i < 5U) {   5704   while (i < 5U) {
5702     pn = get_next_b(pn);   5705     pn = get_next_b(pn);
5703     pp = get_prev_b(pp);   5706     pp = get_prev_b(pp);
5704     if ((unsigned int )pn < (unsigned int )p_best) {   5707     if ((unsigned int )pn < (unsigned int )p_best) {
5705       p_best = pn;   5708       p_best = pn;
5706     } else {   5709     } else {
5707     5710  
5708     }   5711     }
5709     if ((unsigned int )pp < (unsigned int )p_best) {   5712     if ((unsigned int )pp < (unsigned int )p_best) {
5710       p_best = pp;   5713       p_best = pp;
5711     } else {   5714     } else {
5712     5715  
5713     }   5716     }
5714     i ++;   5717     i ++;
5715   }   5718   }
5716   if ((unsigned int )p_best < (unsigned int )a->freelist[lno]) {   5719   if ((unsigned int )p_best < (unsigned int )a->freelist[lno]) {
5717     a->freelist[lno] = p_best;   5720     a->freelist[lno] = p_best;
5718   } else {   5721   } else {
5719     5722  
5720   }   5723   }
5721   return;   5724   return;
5722 }   5725 }
5723 }   5726 }
5724 static Bool blockSane(Arena *a , Block *b )   5727 static Bool blockSane(Arena *a , Block *b )
5725 {   5728 {
5726   UInt i ;   5729   UInt i ;
5727   UByte tmp ;   5730   UByte tmp ;
5728   UByte tmp___0 ;   5731   UByte tmp___0 ;
5729   Bool tmp___1 ;   5732   Bool tmp___1 ;
5730     5733  
5731   {   5734   {
5732   if (! a->clientmem) {   5735   if (! a->clientmem) {
5733     tmp___1 = is_inuse_block(b);   5736     tmp___1 = is_inuse_block(b);
5734     if (tmp___1) {   5737     if (tmp___1) {
5735       while (1) {   5738       while (1) {
5736         break;   5739         break;
5737       }   5740       }
5738       while (1) {   5741       while (1) {
5739         break;   5742         break;
5740       }   5743       }
5741       i = (UInt )0;   5744       i = (UInt )0;
5742       while ((SizeT )i < a->rz_szB) {   5745       while ((SizeT )i < a->rz_szB) {
5743         tmp = get_rz_lo_byte(b, i);   5746         tmp = get_rz_lo_byte(b, i);
5744         if ((int )tmp != (int )((UByte )(((Addr )b & 255UL) ^ 49UL))) {   5747         if ((int )tmp != (int )((UByte )(((Addr )b & 255UL) ^ 49UL))) {
5745           vgPlain_printf("blockSane: fail -- %s\n", "redzone-lo");   5748           vgPlain_printf("blockSane: fail -- %s\n", "redzone-lo");
5746           return ((Bool )0);   5749           return ((Bool )0);
5747         } else {   5750         } else {
5748     5751  
5749         }   5752         }
5750         tmp___0 = get_rz_hi_byte(b, i);   5753         tmp___0 = get_rz_hi_byte(b, i);
5751         if ((int )tmp___0 != (int )((UByte )(((Addr )b & 255UL) ^ 124UL))) {   5754         if ((int )tmp___0 != (int )((UByte )(((Addr )b & 255UL) ^ 124UL))) {
5752           vgPlain_printf("blockSane: fail -- %s\n", "redzone-hi");   5755           vgPlain_printf("blockSane: fail -- %s\n", "redzone-hi");
5753           return ((Bool )0);   5756           return ((Bool )0);
5754         } else {   5757         } else {
5755     5758  
5756         }   5759         }
5757         i ++;   5760         i ++;
5758       }   5761       }
5759       while (1) {   5762       while (1) {
5760         break;   5763         break;
5761       }   5764       }
5762       while (1) {   5765       while (1) {
5763         break;   5766         break;
5764       }   5767       }
5765     } else {   5768     } else {
5766     5769  
5767     }   5770     }
5768   } else {   5771   } else {
5769     5772  
5770   }   5773   }
5771   return ((Bool )1);   5774   return ((Bool )1);
5772 }   5775 }
5773 }   5776 }
5774 static void ppSuperblocks(Arena *a )   5777 static void ppSuperblocks(Arena *a )
5775 {   5778 {
5776   UInt i ;   5779   UInt i ;
5777   UInt j ;   5780   UInt j ;
5778   UInt blockno ;   5781   UInt blockno ;
5779   SizeT b_bszB ;   5782   SizeT b_bszB ;
5780   Superblock *sb ;   5783   Superblock *sb ;
5781   char const   *tmp ;   5784   char const   *tmp ;
5782   UInt tmp___0 ;   5785   UInt tmp___0 ;
5783   Block *b ;   5786   Block *b ;
5784   Bool tmp___1 ;   5787   Bool tmp___1 ;
5785   char const   *tmp___2 ;   5788   char const   *tmp___2 ;
5786   Bool tmp___3 ;   5789   Bool tmp___3 ;
5787   Bool tmp___4 ;   5790   Bool tmp___4 ;
5788   char const   *tmp___5 ;   5791   char const   *tmp___5 ;
5789   Bool tmp___6 ;   5792   Bool tmp___6 ;
5790   long tmp___7 ;   5793   long tmp___7 ;
5791     5794  
5792   {   5795   {
5793   blockno = (UInt )1;   5796   blockno = (UInt )1;
5794   j = (UInt )0;   5797   j = (UInt )0;
5795   while ((SizeT )j < a->sblocks_used) {   5798   while ((SizeT )j < a->sblocks_used) {
5796     sb = *(a->sblocks + j);   5799     sb = *(a->sblocks + j);
5797     vgPlain_printf("\n");   5800     vgPlain_printf("\n");
5798     if (sb->unsplittable) {   5801     if (sb->unsplittable) {
5799       tmp = "unsplittable";   5802       tmp = "unsplittable";
5800     } else {   5803     } else {
5801       tmp = "";   5804       tmp = "";
5802     }   5805     }
5803     tmp___0 = blockno;   5806     tmp___0 = blockno;
5804     blockno ++;   5807     blockno ++;
5805     vgPlain_printf("superblock %d at %p %s, sb->n_pl_bs = %lu\n", tmp___0, sb,   5808     vgPlain_printf("superblock %d at %p %s, sb->n_pl_bs = %lu\n", tmp___0, sb,
5806                    tmp, sb->n_payload_bytes);   5809                    tmp, sb->n_payload_bytes);
5807     i = (UInt )0;   5810     i = (UInt )0;
5808     while ((SizeT )i < sb->n_payload_bytes) {   5811     while ((SizeT )i < sb->n_payload_bytes) {
5809       b = (Block *)(& sb->payload_bytes[i]);   5812       b = (Block *)(& sb->payload_bytes[i]);
5810       b_bszB = get_bszB(b);   5813       b_bszB = get_bszB(b);
5811       vgPlain_printf("   block at %d, bszB %lu: ", i, b_bszB);   5814       vgPlain_printf("   block at %d, bszB %lu: ", i, b_bszB);
5812       tmp___3 = is_inuse_block(b);   5815       tmp___3 = is_inuse_block(b);
5813       if (tmp___3) {   5816       if (tmp___3) {
5814         tmp___2 = "inuse";   5817         tmp___2 = "inuse";
5815       } else {   5818       } else {
5816         tmp___2 = "free";   5819         tmp___2 = "free";
5817       }   5820       }
5818       vgPlain_printf("%s, ", tmp___2);   5821       vgPlain_printf("%s, ", tmp___2);
5819       tmp___6 = blockSane(a, b);   5822       tmp___6 = blockSane(a, b);
5820       if (tmp___6) {   5823       if (tmp___6) {
5821         tmp___5 = "ok";   5824         tmp___5 = "ok";
5822       } else {   5825       } else {
5823         tmp___5 = "BAD";   5826         tmp___5 = "BAD";
5824       }   5827       }
5825       vgPlain_printf("%s\n", tmp___5);   5828       vgPlain_printf("%s\n", tmp___5);
5826       i = (UInt )((SizeT )i + b_bszB);   5829       i = (UInt )((SizeT )i + b_bszB);
5827     }   5830     }
5828     tmp___7 = __builtin_expect((long )(! (! ((SizeT )i == sb->n_payload_bytes))),   5831     tmp___7 = __builtin_expect((long )(! (! ((SizeT )i == sb->n_payload_bytes))),
5829                                1L);   5832                                1L);
5830     if (tmp___7) {   5833     if (tmp___7) {
5831     5834  
5832     } else {   5835     } else {
5833       vgPlain_assert_fail((Bool )1, (Char const   *)"i == sb->n_payload_bytes",   5836       vgPlain_assert_fail((Bool )1, (Char const   *)"i == sb->n_payload_bytes",
5834                           (Char const   *)"m_mallocfree.c", 1092,   5837                           (Char const   *)"m_mallocfree.c", 1092,
5835                           (Char const   *)"ppSuperblocks", "");   5838                           (Char const   *)"ppSuperblocks", "");
5836     }   5839     }
5837     j ++;   5840     j ++;
5838   }   5841   }
5839   vgPlain_printf("end of superblocks\n\n");   5842   vgPlain_printf("end of superblocks\n\n");
5840   return;   5843   return;
5841 }   5844 }
5842 }   5845 }
5843 static void sanity_check_malloc_arena(ArenaId aid )   5846 static void sanity_check_malloc_arena(ArenaId aid )
5844 {   5847 {
5845   UInt i ;   5848   UInt i ;
5846   UInt j ;   5849   UInt j ;
5847   UInt superblockctr ;   5850   UInt superblockctr ;
5848   UInt blockctr_sb ;   5851   UInt blockctr_sb ;
5849   UInt blockctr_li ;   5852   UInt blockctr_li ;
5850   UInt blockctr_sb_free ;   5853   UInt blockctr_sb_free ;
5851   UInt listno ;   5854   UInt listno ;
5852   SizeT b_bszB ;   5855   SizeT b_bszB ;
5853   SizeT b_pszB ;   5856   SizeT b_pszB ;
5854   SizeT list_min_pszB ;   5857   SizeT list_min_pszB ;
5855   SizeT list_max_pszB ;   5858   SizeT list_max_pszB ;
5856   Bool thisFree ;   5859   Bool thisFree ;
5857   Bool lastWasFree ;   5860   Bool lastWasFree ;
5858   Bool sblockarrOK ;   5861   Bool sblockarrOK ;
5859   Block *b ;   5862   Block *b ;
5860   Block *b_prev ;   5863   Block *b_prev ;
5861   SizeT arena_bytes_on_loan ;   5864   SizeT arena_bytes_on_loan ;
5862   Arena *a ;   5865   Arena *a ;
5863   int tmp ;   5866   int tmp ;
5864   int tmp___0 ;   5867   int tmp___0 ;
5865   Superblock *sb ;   5868   Superblock *sb ;
5866   SizeT tmp___1 ;   5869   SizeT tmp___1 ;
5867   Bool tmp___2 ;   5870   Bool tmp___2 ;
5868   Bool tmp___3 ;   5871   Bool tmp___3 ;
5869   int tmp___4 ;   5872   int tmp___4 ;
5870   SizeT tmp___5 ;   5873   SizeT tmp___5 ;
5871   Block *tmp___6 ;   5874   Block *tmp___6 ;
5872     5875  
5873   {   5876   {
5874   a = arenaId_to_ArenaP(aid);   5877   a = arenaId_to_ArenaP(aid);
5875   if ((unsigned int )a->sblocks != (unsigned int )((void *)0)) {   5878   if ((unsigned int )a->sblocks != (unsigned int )((void *)0)) {
5876     if (a->sblocks_size >= 50UL) {   5879     if (a->sblocks_size >= 50UL) {
5877       if (a->sblocks_used <= a->sblocks_size) {   5880       if (a->sblocks_used <= a->sblocks_size) {
5878         if (a->sblocks_size == 50UL) {   5881         if (a->sblocks_size == 50UL) {
5879           tmp = (unsigned int )a->sblocks == (unsigned int )(& a->sblocks_initial[0]);   5882           tmp = (unsigned int )a->sblocks == (unsigned int )(& a->sblocks_initial[0]);
5880         } else {   5883         } else {
5881           tmp = (unsigned int )a->sblocks != (unsigned int )(& a->sblocks_initial[0]);   5884           tmp = (unsigned int )a->sblocks != (unsigned int )(& a->sblocks_initial[0]);
5882         }   5885         }
5883         if (tmp) {   5886         if (tmp) {
5884           tmp___0 = 1;   5887           tmp___0 = 1;
5885         } else {   5888         } else {
5886           tmp___0 = 0;   5889           tmp___0 = 0;
5887         }   5890         }
5888       } else {   5891       } else {
5889         tmp___0 = 0;   5892         tmp___0 = 0;
5890       }   5893       }
5891     } else {   5894     } else {
5892       tmp___0 = 0;   5895       tmp___0 = 0;
5893     }   5896     }
5894   } else {   5897   } else {
5895     tmp___0 = 0;   5898     tmp___0 = 0;
5896   }   5899   }
5897   sblockarrOK = (Bool )tmp___0;   5900   sblockarrOK = (Bool )tmp___0;
5898   if (! sblockarrOK) {   5901   if (! sblockarrOK) {
5899     vgPlain_printf("sanity_check_malloc_arena: sblock array BAD\n");   5902     vgPlain_printf("sanity_check_malloc_arena: sblock array BAD\n");
5900     vgPlain_core_panic((Char *)"sanity_check_malloc_arena");   5903     vgPlain_core_panic((Char *)"sanity_check_malloc_arena");
5901   } else {   5904   } else {
5902     5905  
5903   }   5906   }
5904   blockctr_sb_free = (UInt )0;   5907   blockctr_sb_free = (UInt )0;
5905   blockctr_sb = blockctr_sb_free;   5908   blockctr_sb = blockctr_sb_free;
5906   superblockctr = blockctr_sb;   5909   superblockctr = blockctr_sb;
5907   arena_bytes_on_loan = (SizeT )0;   5910   arena_bytes_on_loan = (SizeT )0;
5908   j = (UInt )0;   5911   j = (UInt )0;
5909   while ((SizeT )j < a->sblocks_used) {   5912   while ((SizeT )j < a->sblocks_used) {
5910     sb = *(a->sblocks + j);   5913     sb = *(a->sblocks + j);
5911     lastWasFree = (Bool )0;   5914     lastWasFree = (Bool )0;
5912     superblockctr ++;   5915     superblockctr ++;
5913     i = (UInt )0;   5916     i = (UInt )0;
5914     while ((SizeT )i < sb->n_payload_bytes) {   5917     while ((SizeT )i < sb->n_payload_bytes) {
5915       blockctr_sb ++;   5918       blockctr_sb ++;
5916       b = (Block *)(& sb->payload_bytes[i]);   5919       b = (Block *)(& sb->payload_bytes[i]);
5917       b_bszB = get_bszB_as_is(b);   5920       b_bszB = get_bszB_as_is(b);
5918       tmp___2 = blockSane(a, b);   5921       tmp___2 = blockSane(a, b);
5919       if (tmp___2) {   5922       if (tmp___2) {
5920     5923  
5921       } else {   5924       } else {
5922         vgPlain_printf("sanity_check_malloc_arena: sb %p, block %d (bszB %lu):  BAD\n",   5925         vgPlain_printf("sanity_check_malloc_arena: sb %p, block %d (bszB %lu):  BAD\n",
5923                        sb, i, b_bszB);   5926                        sb, i, b_bszB);
5924         vgPlain_core_panic((Char *)"sanity_check_malloc_arena");   5927         vgPlain_core_panic((Char *)"sanity_check_malloc_arena");
5925       }   5928       }
5926       tmp___3 = is_inuse_block(b);   5929       tmp___3 = is_inuse_block(b);
5927       if (tmp___3) {   5930       if (tmp___3) {
5928         tmp___4 = 0;   5931         tmp___4 = 0;
5929       } else {   5932       } else {
5930         tmp___4 = 1;   5933         tmp___4 = 1;
5931       }   5934       }
5932       thisFree = (Bool )tmp___4;   5935       thisFree = (Bool )tmp___4;
5933       if (thisFree) {   5936       if (thisFree) {
5934         if (lastWasFree) {   5937         if (lastWasFree) {
5935           vgPlain_printf("sanity_check_malloc_arena: sb %p, block %d (bszB %lu): UNMERGED FREES\n",   5938           vgPlain_printf("sanity_check_malloc_arena: sb %p, block %d (bszB %lu): UNMERGED FREES\n",
5936                          sb, i, b_bszB);   5939                          sb, i, b_bszB);
5937           vgPlain_core_panic((Char *)"sanity_check_malloc_arena");   5940           vgPlain_core_panic((Char *)"sanity_check_malloc_arena");
5938         } else {   5941         } else {
5939     5942  
5940         }   5943         }
5941       } else {   5944       } else {
5942     5945  
5943       }   5946       }
5944       if (thisFree) {   5947       if (thisFree) {
5945         blockctr_sb_free ++;   5948         blockctr_sb_free ++;
5946       } else {   5949       } else {
5947     5950  
5948       }   5951       }
5949       if (! thisFree) {   5952       if (! thisFree) {
5950         tmp___5 = bszB_to_pszB(a, b_bszB);   5953         tmp___5 = bszB_to_pszB(a, b_bszB);
5951         arena_bytes_on_loan += tmp___5;   5954         arena_bytes_on_loan += tmp___5;
5952       } else {   5955       } else {
5953     5956  
5954       }   5957       }
5955       lastWasFree = thisFree;   5958       lastWasFree = thisFree;
5956       tmp___1 = mk_plain_bszB(b_bszB);   5959       tmp___1 = mk_plain_bszB(b_bszB);
5957       i = (UInt )((SizeT )i + tmp___1);   5960       i = (UInt )((SizeT )i + tmp___1);
5958     }   5961     }
5959     if ((SizeT )i > sb->n_payload_bytes) {   5962     if ((SizeT )i > sb->n_payload_bytes) {
5960       vgPlain_printf("sanity_check_malloc_arena: sb %p: last block overshoots end\n",   5963       vgPlain_printf("sanity_check_malloc_arena: sb %p: last block overshoots end\n",
5961                      sb);   5964                      sb);
5962       vgPlain_core_panic((Char *)"sanity_check_malloc_arena");   5965       vgPlain_core_panic((Char *)"sanity_check_malloc_arena");
5963     } else {   5966     } else {
5964     5967  
5965     }   5968     }
5966     j ++;   5969     j ++;
5967   }   5970   }
5968   if (arena_bytes_on_loan != a->stats__bytes_on_loan) {   5971   if (arena_bytes_on_loan != a->stats__bytes_on_loan) {
5969     ppSuperblocks(a);   5972     ppSuperblocks(a);
5970     vgPlain_core_panic((Char *)"sanity_check_malloc_arena");   5973     vgPlain_core_panic((Char *)"sanity_check_malloc_arena");
5971   } else {   5974   } else {
5972     5975  
5973   }   5976   }
5974   blockctr_li = (UInt )0;   5977   blockctr_li = (UInt )0;
5975   listno = (UInt )0;   5978   listno = (UInt )0;
5976   while (listno < 112U) {   5979   while (listno < 112U) {
5977     list_min_pszB = listNo_to_pszB_min(listno);   5980     list_min_pszB = listNo_to_pszB_min(listno);
5978     list_max_pszB = listNo_to_pszB_max(listno);   5981     list_max_pszB = listNo_to_pszB_max(listno);
5979     b = a->freelist[listno];   5982     b = a->freelist[listno];
5980     if ((unsigned int )b == (unsigned int )((void *)0)) {   5983     if ((unsigned int )b == (unsigned int )((void *)0)) {
5981       goto __Cont;   5984       goto __Cont;
5982     } else {   5985     } else {
5983     5986  
5984     }   5987     }
5985     while (1) {   5988     while (1) {
5986       b_prev = b;   5989       b_prev = b;
5987       b = get_next_b(b);   5990       b = get_next_b(b);
5988       tmp___6 = get_prev_b(b);   5991       tmp___6 = get_prev_b(b);
5989       if ((unsigned int )tmp___6 != (unsigned int )b_prev) {   5992       if ((unsigned int )tmp___6 != (unsigned int )b_prev) {
5990         vgPlain_printf("sanity_check_malloc_arena: list %d at %p: BAD LINKAGE\n",   5993         vgPlain_printf("sanity_check_malloc_arena: list %d at %p: BAD LINKAGE\n",
5991                        listno, b);   5994                        listno, b);
5992         vgPlain_core_panic((Char *)"sanity_check_malloc_arena");   5995         vgPlain_core_panic((Char *)"sanity_check_malloc_arena");
5993       } else {   5996       } else {
5994     5997  
5995       }   5998       }
5996       b_pszB = get_pszB(a, b);   5999       b_pszB = get_pszB(a, b);
5997       if (b_pszB < list_min_pszB) {   6000       if (b_pszB < list_min_pszB) {
5998         vgPlain_printf("sanity_check_malloc_arena: list %d at %p: WRONG CHAIN SIZE %luB (%luB, %luB)\n",   6001         vgPlain_printf("sanity_check_malloc_arena: list %d at %p: WRONG CHAIN SIZE %luB (%luB, %luB)\n",
5999                        listno, b, b_pszB, list_min_pszB, list_max_pszB);   6002                        listno, b, b_pszB, list_min_pszB, list_max_pszB);
6000         vgPlain_core_panic((Char *)"sanity_check_malloc_arena");   6003         vgPlain_core_panic((Char *)"sanity_check_malloc_arena");
6001       } else   6004       } else
6002       if (b_pszB > list_max_pszB) {   6005       if (b_pszB > list_max_pszB) {
6003         vgPlain_printf("sanity_check_malloc_arena: list %d at %p: WRONG CHAIN SIZE %luB (%luB, %luB)\n",   6006         vgPlain_printf("sanity_check_malloc_arena: list %d at %p: WRONG CHAIN SIZE %luB (%luB, %luB)\n",
6004                        listno, b, b_pszB, list_min_pszB, list_max_pszB);   6007                        listno, b, b_pszB, list_min_pszB, list_max_pszB);
6005         vgPlain_core_panic((Char *)"sanity_check_malloc_arena");   6008         vgPlain_core_panic((Char *)"sanity_check_malloc_arena");
6006       } else {   6009       } else {
6007     6010  
6008       }   6011       }
6009       blockctr_li ++;   6012       blockctr_li ++;
6010       if ((unsigned int )b == (unsigned int )a->freelist[listno]) {   6013       if ((unsigned int )b == (unsigned int )a->freelist[listno]) {
6011         break;   6014         break;
6012       } else {   6015       } else {
6013     6016  
6014       }   6017       }
6015     }   6018     }
6016     __Cont: /* CIL Label */   6019     __Cont: /* CIL Label */
6017     listno ++;   6020     listno ++;
6018   }   6021   }
6019   if (blockctr_sb_free != blockctr_li) {   6022   if (blockctr_sb_free != blockctr_li) {
6020     ppSuperblocks(a);   6023     ppSuperblocks(a);
6021     vgPlain_core_panic((Char *)"sanity_check_malloc_arena");   6024     vgPlain_core_panic((Char *)"sanity_check_malloc_arena");
6022   } else {   6025   } else {
6023     6026  
6024   }   6027   }
6025   if (vgPlain_clo_verbosity > 2) {   6028   if (vgPlain_clo_verbosity > 2) {
6026     vgPlain_message((VgMsgKind )2,   6029     vgPlain_message((VgMsgKind )2,
6027                     "%8s: %2d sbs, %5d bs, %2d/%-2d free bs, %7ld mmap, %7ld loan\n",   6030                     "%8s: %2d sbs, %5d bs, %2d/%-2d free bs, %7ld mmap, %7ld loan\n",
6028                     a->name, superblockctr, blockctr_sb, blockctr_sb_free,   6031                     a->name, superblockctr, blockctr_sb, blockctr_sb_free,
6029                     blockctr_li, a->stats__bytes_mmaped, a->stats__bytes_on_loan);   6032                     blockctr_li, a->stats__bytes_mmaped, a->stats__bytes_on_loan);
6030   } else {   6033   } else {
6031     6034  
6032   }   6035   }
6033   return;   6036   return;
6034 }   6037 }
6035 }   6038 }
6036 static AnCC anCCs[1000]  ;   6039 static AnCC anCCs[1000]  ;
6037 static Int cmp_AnCC_by_vol(void *v1 , void *v2 )   6040 static Int cmp_AnCC_by_vol(void *v1 , void *v2 )
6038 {   6041 {
6039   AnCC *ancc1 ;   6042   AnCC *ancc1 ;
6040   AnCC *ancc2 ;   6043   AnCC *ancc2 ;
6041     6044  
6042   {   6045   {
6043   ancc1 = (AnCC *)v1;   6046   ancc1 = (AnCC *)v1;
6044   ancc2 = (AnCC *)v2;   6047   ancc2 = (AnCC *)v2;
6045   if (ancc1->nBytes < ancc2->nBytes) {   6048   if (ancc1->nBytes < ancc2->nBytes) {
6046     return (-1);   6049     return (-1);
6047   } else {   6050   } else {
6048     6051  
6049   }   6052   }
6050   if (ancc1->nBytes > ancc2->nBytes) {   6053   if (ancc1->nBytes > ancc2->nBytes) {
6051     return (1);   6054     return (1);
6052   } else {   6055   } else {
6053     6056  
6054   }   6057   }
6055   return (0);   6058   return (0);
6056 }   6059 }
6057 }   6060 }
6058 static void cc_analyse_alloc_arena(ArenaId aid )   6061 static void cc_analyse_alloc_arena(ArenaId aid )
6059 {   6062 {
6060   Word i ;   6063   Word i ;
6061   Word j ;   6064   Word j ;
6062   Word k ;   6065   Word k ;
6063   Arena *a ;   6066   Arena *a ;
6064   Block *b ;   6067   Block *b ;
6065   Bool thisFree ;   6068   Bool thisFree ;
6066   Bool lastWasFree ;   6069   Bool lastWasFree ;
6067   SizeT b_bszB ;   6070   SizeT b_bszB ;
6068   HChar *cc ;   6071   HChar *cc ;
6069   UInt n_ccs ;   6072   UInt n_ccs ;
6070   Superblock *sb ;   6073   Superblock *sb ;
6071   SizeT tmp ;   6074   SizeT tmp ;
6072   long tmp___0 ;   6075   long tmp___0 ;
6073   Bool tmp___1 ;   6076   Bool tmp___1 ;
6074   Bool tmp___2 ;   6077   Bool tmp___2 ;
6075   int tmp___3 ;   6078   int tmp___3 ;
6076   long tmp___4 ;   6079   long tmp___4 ;
6077   HChar *tmp___5 ;   6080   HChar *tmp___5 ;
6078   SizeT tmp___6 ;   6081   SizeT tmp___6 ;
6079   long tmp___7 ;   6082   long tmp___7 ;
6080   long tmp___8 ;   6083   long tmp___8 ;
6081   Int tmp___9 ;   6084   Int tmp___9 ;
6082   int tmp___10 ;   6085   int tmp___10 ;
6083   long tmp___11 ;   6086   long tmp___11 ;
6084   long tmp___12 ;   6087   long tmp___12 ;
6085   int tmp___13 ;   6088   int tmp___13 ;
6086   long tmp___14 ;   6089   long tmp___14 ;
6087   SizeT tmp___15 ;   6090   SizeT tmp___15 ;
6088   long tmp___16 ;   6091   long tmp___16 ;
6089     6092  
6090   {   6093   {
6091   n_ccs = (UInt )0;   6094   n_ccs = (UInt )0;
6092   a = arenaId_to_ArenaP(aid);   6095   a = arenaId_to_ArenaP(aid);
6093   if ((unsigned int )a->name == (unsigned int )((void *)0)) {   6096   if ((unsigned int )a->name == (unsigned int )((void *)0)) {
6094     return;   6097     return;
6095   } else {   6098   } else {
6096     6099  
6097   }   6100   }
6098   sanity_check_malloc_arena(aid);   6101   sanity_check_malloc_arena(aid);
6099   vgPlain_printf("-------- Arena \"%s\": %lu/%lu max/curr mmap\'d, %llu/%llu unsplit/split sb unmmap\'d, %lu/%lu max/curr on_loan --------\n",   6102   vgPlain_printf("-------- Arena \"%s\": %lu/%lu max/curr mmap\'d, %llu/%llu unsplit/split sb unmmap\'d, %lu/%lu max/curr on_loan --------\n",
6100                  a->name, a->stats__bytes_mmaped_max, a->stats__bytes_mmaped,   6103                  a->name, a->stats__bytes_mmaped_max, a->stats__bytes_mmaped,
6101                  a->stats__nreclaim_unsplit, a->stats__nreclaim_split,   6104                  a->stats__nreclaim_unsplit, a->stats__nreclaim_split,
6102                  a->stats__bytes_on_loan_max, a->stats__bytes_on_loan);   6105                  a->stats__bytes_on_loan_max, a->stats__bytes_on_loan);
6103   j = (Word )0;   6106   j = (Word )0;
6104   while ((SizeT )j < a->sblocks_used) {   6107   while ((SizeT )j < a->sblocks_used) {
6105     sb = *(a->sblocks + j);   6108     sb = *(a->sblocks + j);
6106     lastWasFree = (Bool )0;   6109     lastWasFree = (Bool )0;
6107     i = (Word )0;   6110     i = (Word )0;
6108     while ((SizeT )i < sb->n_payload_bytes) {   6111     while ((SizeT )i < sb->n_payload_bytes) {
6109       b = (Block *)(& sb->payload_bytes[i]);   6112       b = (Block *)(& sb->payload_bytes[i]);
6110       b_bszB = get_bszB_as_is(b);   6113       b_bszB = get_bszB_as_is(b);
6111       tmp___1 = blockSane(a, b);   6114       tmp___1 = blockSane(a, b);
6112       if (tmp___1) {   6115       if (tmp___1) {
6113     6116  
6114       } else {   6117       } else {
6115         vgPlain_printf("sanity_check_malloc_arena: sb %p, block %ld (bszB %lu):  BAD\n",   6118         vgPlain_printf("sanity_check_malloc_arena: sb %p, block %ld (bszB %lu):  BAD\n",
6116                        sb, i, b_bszB);   6119                        sb, i, b_bszB);
6117         tmp___0 = __builtin_expect(0L, 1L);   6120         tmp___0 = __builtin_expect(0L, 1L);
6118         if (tmp___0) {   6121         if (tmp___0) {
6119     6122  
6120         } else {   6123         } else {
6121           vgPlain_assert_fail((Bool )0, (Char const   *)"0",   6124           vgPlain_assert_fail((Bool )0, (Char const   *)"0",
6122                               (Char const   *)"m_mallocfree.c", 1275,   6125                               (Char const   *)"m_mallocfree.c", 1275,
6123                               (Char const   *)"cc_analyse_alloc_arena", "");   6126                               (Char const   *)"cc_analyse_alloc_arena", "");
6124         }   6127         }
6125       }   6128       }
6126       tmp___2 = is_inuse_block(b);   6129       tmp___2 = is_inuse_block(b);
6127       if (tmp___2) {   6130       if (tmp___2) {
6128         tmp___3 = 0;   6131         tmp___3 = 0;
6129       } else {   6132       } else {
6130         tmp___3 = 1;   6133         tmp___3 = 1;
6131       }   6134       }
6132       thisFree = (Bool )tmp___3;   6135       thisFree = (Bool )tmp___3;
6133       if (thisFree) {   6136       if (thisFree) {
6134         if (lastWasFree) {   6137         if (lastWasFree) {
6135           vgPlain_printf("sanity_check_malloc_arena: sb %p, block %ld (bszB %lu): UNMERGED FREES\n",   6138           vgPlain_printf("sanity_check_malloc_arena: sb %p, block %ld (bszB %lu): UNMERGED FREES\n",
6136                          sb, i, b_bszB);   6139                          sb, i, b_bszB);
6137           tmp___4 = __builtin_expect(0L, 1L);   6140           tmp___4 = __builtin_expect(0L, 1L);
6138           if (tmp___4) {   6141           if (tmp___4) {
6139     6142  
6140           } else {   6143           } else {
6141             vgPlain_assert_fail((Bool )0, (Char const   *)"0",   6144             vgPlain_assert_fail((Bool )0, (Char const   *)"0",
6142                                 (Char const   *)"m_mallocfree.c", 1281,   6145                                 (Char const   *)"m_mallocfree.c", 1281,
6143                                 (Char const   *)"cc_analyse_alloc_arena", "");   6146                                 (Char const   *)"cc_analyse_alloc_arena", "");
6144           }   6147           }
6145         } else {   6148         } else {
6146     6149  
6147         }   6150         }
6148       } else {   6151       } else {
6149     6152  
6150       }   6153       }
6151       lastWasFree = thisFree;   6154       lastWasFree = thisFree;
6152       if (thisFree) {   6155       if (thisFree) {
6153         goto __Cont;   6156         goto __Cont;
6154       } else {   6157       } else {
6155     6158  
6156       }   6159       }
6157       cc = get_cc(b);   6160       cc = get_cc(b);
6158       tmp___7 = __builtin_expect((long )(! (! cc)), 1L);   6161       tmp___7 = __builtin_expect((long )(! (! cc)), 1L);
6159       if (tmp___7) {   6162       if (tmp___7) {
6160     6163  
6161       } else {   6164       } else {
6162         vgPlain_assert_fail((Bool )0, (Char const   *)"cc",   6165         vgPlain_assert_fail((Bool )0, (Char const   *)"cc",
6163                             (Char const   *)"m_mallocfree.c", 1293,   6166                             (Char const   *)"m_mallocfree.c", 1293,
6164                             (Char const   *)"cc_analyse_alloc_arena", "");   6167                             (Char const   *)"cc_analyse_alloc_arena", "");
6165       }   6168       }
6166       k = (Word )0;   6169       k = (Word )0;
6167       while ((unsigned long )k < (unsigned long )n_ccs) {   6170       while ((unsigned long )k < (unsigned long )n_ccs) {
6168         tmp___8 = __builtin_expect((long )(! (! anCCs[k].cc)), 1L);   6171         tmp___8 = __builtin_expect((long )(! (! anCCs[k].cc)), 1L);
6169         if (tmp___8) {   6172         if (tmp___8) {
6170     6173  
6171         } else {   6174         } else {
6172           vgPlain_assert_fail((Bool )0, (Char const   *)"anCCs[k].cc",   6175           vgPlain_assert_fail((Bool )0, (Char const   *)"anCCs[k].cc",
6173                               (Char const   *)"m_mallocfree.c", 1295,   6176                               (Char const   *)"m_mallocfree.c", 1295,
6174                               (Char const   *)"cc_analyse_alloc_arena", "");   6177                               (Char const   *)"cc_analyse_alloc_arena", "");
6175         }   6178         }
6176         tmp___9 = vgPlain_strcmp((Char const   *)cc, (Char const   *)anCCs[k].cc);   6179         tmp___9 = vgPlain_strcmp((Char const   *)cc, (Char const   *)anCCs[k].cc);
6177         if (0 == tmp___9) {   6180         if (0 == tmp___9) {
6178           break;   6181           break;
6179         } else {   6182         } else {
6180     6183  
6181         }   6184         }
6182         k ++;   6185         k ++;
6183       }   6186       }
6184       if (k >= 0L) {   6187       if (k >= 0L) {
6185         if ((unsigned long )k <= (unsigned long )n_ccs) {   6188         if ((unsigned long )k <= (unsigned long )n_ccs) {
6186           tmp___10 = 1;   6189           tmp___10 = 1;
6187         } else {   6190         } else {
6188           tmp___10 = 0;   6191           tmp___10 = 0;
6189         }   6192         }
6190       } else {   6193       } else {
6191         tmp___10 = 0;   6194         tmp___10 = 0;
6192       }   6195       }
6193       tmp___11 = __builtin_expect((long )tmp___10, 1L);   6196       tmp___11 = __builtin_expect((long )tmp___10, 1L);
6194       if (tmp___11) {   6197       if (tmp___11) {
6195     6198  
6196       } else {   6199       } else {
6197         vgPlain_assert_fail((Bool )0, (Char const   *)"k >= 0 && k <= n_ccs",   6200         vgPlain_assert_fail((Bool )0, (Char const   *)"k >= 0 && k <= n_ccs",
6198                             (Char const   *)"m_mallocfree.c", 1299,   6201                             (Char const   *)"m_mallocfree.c", 1299,
6199                             (Char const   *)"cc_analyse_alloc_arena", "");   6202                             (Char const   *)"cc_analyse_alloc_arena", "");
6200       }   6203       }
6201       if ((unsigned long )k == (unsigned long )n_ccs) {   6204       if ((unsigned long )k == (unsigned long )n_ccs) {
6202         tmp___12 = __builtin_expect((long )(! (! (n_ccs < 999U))), 1L);   6205         tmp___12 = __builtin_expect((long )(! (! (n_ccs < 999U))), 1L);
6203         if (tmp___12) {   6206         if (tmp___12) {
6204     6207  
6205         } else {   6208         } else {
6206           vgPlain_assert_fail((Bool )0, (Char const   *)"n_ccs < N_AN_CCS-1",   6209           vgPlain_assert_fail((Bool )0, (Char const   *)"n_ccs < N_AN_CCS-1",
6207                               (Char const   *)"m_mallocfree.c", 1302,   6210                               (Char const   *)"m_mallocfree.c", 1302,
6208                               (Char const   *)"cc_analyse_alloc_arena", "");   6211                               (Char const   *)"cc_analyse_alloc_arena", "");
6209         }   6212         }
6210         n_ccs ++;   6213         n_ccs ++;
6211         anCCs[k].nBytes = (ULong )0;   6214         anCCs[k].nBytes = (ULong )0;
6212         anCCs[k].nBlocks = (ULong )0;   6215         anCCs[k].nBlocks = (ULong )0;
6213         anCCs[k].cc = cc;   6216         anCCs[k].cc = cc;
6214       } else {   6217       } else {
6215     6218  
6216       }   6219       }
6217       if (k >= 0L) {   6220       if (k >= 0L) {
6218         if ((unsigned long )k < (unsigned long )n_ccs) {   6221         if ((unsigned long )k < (unsigned long )n_ccs) {
6219           if (k < 1000L) {   6222           if (k < 1000L) {
6220             tmp___13 = 1;   6223             tmp___13 = 1;
6221           } else {   6224           } else {
6222             tmp___13 = 0;   6225             tmp___13 = 0;
6223           }   6226           }
6224         } else {   6227         } else {
6225           tmp___13 = 0;   6228           tmp___13 = 0;
6226         }   6229         }
6227       } else {   6230       } else {
6228         tmp___13 = 0;   6231         tmp___13 = 0;
6229       }   6232       }
6230       tmp___14 = __builtin_expect((long )tmp___13, 1L);   6233       tmp___14 = __builtin_expect((long )tmp___13, 1L);
6231       if (tmp___14) {   6234       if (tmp___14) {
6232     6235  
6233       } else {   6236       } else {
6234         vgPlain_assert_fail((Bool )0,   6237         vgPlain_assert_fail((Bool )0,
6235                             (Char const   *)"k >= 0 && k < n_ccs && k < N_AN_CCS",   6238                             (Char const   *)"k >= 0 && k < n_ccs && k < N_AN_CCS",
6236                             (Char const   *)"m_mallocfree.c", 1309,   6239                             (Char const   *)"m_mallocfree.c", 1309,
6237                             (Char const   *)"cc_analyse_alloc_arena", "");   6240                             (Char const   *)"cc_analyse_alloc_arena", "");
6238       }   6241       }
6239       tmp___15 = bszB_to_pszB(a, b_bszB);   6242       tmp___15 = bszB_to_pszB(a, b_bszB);
6240       anCCs[k].nBytes += (ULong )tmp___15;   6243       anCCs[k].nBytes += (ULong )tmp___15;
6241       (anCCs[k].nBlocks) ++;   6244       (anCCs[k].nBlocks) ++;
6242       __Cont: /* CIL Label */   6245       __Cont: /* CIL Label */
6243       tmp = mk_plain_bszB(b_bszB);   6246       tmp = mk_plain_bszB(b_bszB);
6244       i = (Word )((SizeT )i + tmp);   6247       i = (Word )((SizeT )i + tmp);
6245     }   6248     }
6246     if ((SizeT )i > sb->n_payload_bytes) {   6249     if ((SizeT )i > sb->n_payload_bytes) {
6247       vgPlain_printf("sanity_check_malloc_arena: sb %p: last block overshoots end\n",   6250       vgPlain_printf("sanity_check_malloc_arena: sb %p: last block overshoots end\n",
6248                      sb);   6251                      sb);
6249       tmp___16 = __builtin_expect(0L, 1L);   6252       tmp___16 = __builtin_expect(0L, 1L);
6250       if (tmp___16) {   6253       if (tmp___16) {
6251     6254  
6252       } else {   6255       } else {
6253         vgPlain_assert_fail((Bool )0, (Char const   *)"0",   6256         vgPlain_assert_fail((Bool )0, (Char const   *)"0",
6254                             (Char const   *)"m_mallocfree.c", 1316,   6257                             (Char const   *)"m_mallocfree.c", 1316,
6255                             (Char const   *)"cc_analyse_alloc_arena", "");   6258                             (Char const   *)"cc_analyse_alloc_arena", "");
6256       }   6259       }
6257     } else {   6260     } else {
6258     6261  
6259     }   6262     }
6260     j ++;   6263     j ++;
6261   }   6264   }
6262   vgPlain_ssort((void *)(& anCCs[0]), (SizeT )n_ccs, (SizeT )sizeof(anCCs[0]),   6265   vgPlain_ssort((void *)(& anCCs[0]), (SizeT )n_ccs, (SizeT )sizeof(anCCs[0]),
6263                 & cmp_AnCC_by_vol);   6266                 & cmp_AnCC_by_vol);
6264   k = (Word )0;   6267   k = (Word )0;
6265   while ((unsigned long )k < (unsigned long )n_ccs) {   6268   while ((unsigned long )k < (unsigned long )n_ccs) {
6266     vgPlain_printf("%\'13llu in %\'9llu: %s\n", anCCs[k].nBytes,   6269     vgPlain_printf("%\'13llu in %\'9llu: %s\n", anCCs[k].nBytes,
6267                    anCCs[k].nBlocks, anCCs[k].cc);   6270                    anCCs[k].nBlocks, anCCs[k].cc);
6268     k ++;   6271     k ++;
6269   }   6272   }
6270   vgPlain_printf("\n");   6273   vgPlain_printf("\n");
6271   return;   6274   return;
6272 }   6275 }
6273 }   6276 }
6274 void vgPlain_sanity_check_malloc_all(void)   6277 void vgPlain_sanity_check_malloc_all(void)
6275 {   6278 {
6276   UInt i ;   6279   UInt i ;
6277     6280  
6278   {   6281   {
6279   i = (UInt )0;   6282   i = (UInt )0;
6280   while (i < 8U) {   6283   while (i < 8U) {
6281     if (i == 3U) {   6284     if (i == 3U) {
6282       if (! client_inited) {   6285       if (! client_inited) {
6283         goto __Cont;   6286         goto __Cont;
6284       } else {   6287       } else {
6285     6288  
6286       }   6289       }
6287     } else {   6290     } else {
6288     6291  
6289     }   6292     }
6290     sanity_check_malloc_arena((ArenaId )i);   6293     sanity_check_malloc_arena((ArenaId )i);
6291     __Cont: /* CIL Label */   6294     __Cont: /* CIL Label */
6292     i ++;   6295     i ++;
6293   }   6296   }
6294   return;   6297   return;
6295 }   6298 }
6296 }   6299 }
6297 static void mkFreeBlock(Arena *a , Block *b , SizeT bszB , UInt b_lno )   6300 static void mkFreeBlock(Arena *a , Block *b , SizeT bszB , UInt b_lno )
6298 {   6301 {
6299   SizeT pszB ;   6302   SizeT pszB ;
6300   SizeT tmp ;   6303   SizeT tmp ;
6301   UInt tmp___0 ;   6304   UInt tmp___0 ;
6302   int tmp___1 ;   6305   int tmp___1 ;
6303   long tmp___2 ;   6306   long tmp___2 ;
6304   SizeT tmp___3 ;   6307   SizeT tmp___3 ;
6305   Block *b_prev ;   6308   Block *b_prev ;
6306   Block *tmp___4 ;   6309   Block *tmp___4 ;
6307   Block *b_next ;   6310   Block *b_next ;
6308     6311  
6309   {   6312   {
6310   tmp = bszB_to_pszB(a, bszB);   6313   tmp = bszB_to_pszB(a, bszB);
6311   pszB = tmp;   6314   pszB = tmp;
6312   tmp___0 = pszB_to_listNo(pszB);   6315   tmp___0 = pszB_to_listNo(pszB);
6313   if (b_lno == tmp___0) {   6316   if (b_lno == tmp___0) {
6314     tmp___1 = 1;   6317     tmp___1 = 1;
6315   } else {   6318   } else {
6316     tmp___1 = 0;   6319     tmp___1 = 0;
6317   }   6320   }
6318   tmp___2 = __builtin_expect((long )tmp___1, 1L);   6321   tmp___2 = __builtin_expect((long )tmp___1, 1L);
6319   if (tmp___2) {   6322   if (tmp___2) {
6320     6323  
6321   } else {   6324   } else {
6322     vgPlain_assert_fail((Bool )1,   6325     vgPlain_assert_fail((Bool )1,
6323                         (Char const   *)"b_lno == pszB_to_listNo(pszB)",   6326                         (Char const   *)"b_lno == pszB_to_listNo(pszB)",
6324                         (Char const   *)"m_mallocfree.c", 1353,   6327                         (Char const   *)"m_mallocfree.c", 1353,
6325                         (Char const   *)"mkFreeBlock", "");   6328                         (Char const   *)"mkFreeBlock", "");
6326   }   6329   }
6327   while (1) {   6330   while (1) {
6328     break;   6331     break;
6329   }   6332   }
6330   tmp___3 = mk_free_bszB(bszB);   6333   tmp___3 = mk_free_bszB(bszB);
6331   set_bszB(b, tmp___3);   6334   set_bszB(b, tmp___3);
6332   if ((unsigned int )a->freelist[b_lno] == (unsigned int )((void *)0)) {   6335   if ((unsigned int )a->freelist[b_lno] == (unsigned int )((void *)0)) {
6333     set_prev_b(b, b);   6336     set_prev_b(b, b);
6334     set_next_b(b, b);   6337     set_next_b(b, b);
6335     a->freelist[b_lno] = b;   6338     a->freelist[b_lno] = b;
6336   } else {   6339   } else {
6337     tmp___4 = get_prev_b(a->freelist[b_lno]);   6340     tmp___4 = get_prev_b(a->freelist[b_lno]);
6338     b_prev = tmp___4;   6341     b_prev = tmp___4;
6339     b_next = a->freelist[b_lno];   6342     b_next = a->freelist[b_lno];
6340     set_next_b(b_prev, b);   6343     set_next_b(b_prev, b);
6341     set_prev_b(b_next, b);   6344     set_prev_b(b_next, b);
6342     set_next_b(b, b_next);   6345     set_next_b(b, b_next);
6343     set_prev_b(b, b_prev);   6346     set_prev_b(b, b_prev);
6344   }   6347   }
6345   return;   6348   return;
6346 }   6349 }
6347 }   6350 }
6348 static void mkInuseBlock(Arena *a , Block *b , SizeT bszB )   6351 static void mkInuseBlock(Arena *a , Block *b , SizeT bszB )
6349 {   6352 {
6350   UInt i ;   6353   UInt i ;
6351   SizeT tmp ;   6354   SizeT tmp ;
6352   int tmp___0 ;   6355   int tmp___0 ;
6353   long tmp___1 ;   6356   long tmp___1 ;
6354   SizeT tmp___2 ;   6357   SizeT tmp___2 ;
6355     6358  
6356   {   6359   {
6357   tmp = min_useful_bszB(a);   6360   tmp = min_useful_bszB(a);
6358   if (bszB >= tmp) {   6361   if (bszB >= tmp) {
6359     tmp___0 = 1;   6362     tmp___0 = 1;
6360   } else {   6363   } else {
6361     tmp___0 = 0;   6364     tmp___0 = 0;
6362   }   6365   }
6363   tmp___1 = __builtin_expect((long )tmp___0, 1L);   6366   tmp___1 = __builtin_expect((long )tmp___0, 1L);
6364   if (tmp___1) {   6367   if (tmp___1) {
6365     6368  
6366   } else {   6369   } else {
6367     vgPlain_assert_fail((Bool )1, (Char const   *)"bszB >= min_useful_bszB(a)",   6370     vgPlain_assert_fail((Bool )1, (Char const   *)"bszB >= min_useful_bszB(a)",
6368                         (Char const   *)"m_mallocfree.c", 1382,   6371                         (Char const   *)"m_mallocfree.c", 1382,
6369                         (Char const   *)"mkInuseBlock", "");   6372                         (Char const   *)"mkInuseBlock", "");
6370   }   6373   }
6371   while (1) {   6374   while (1) {
6372     break;   6375     break;
6373   }   6376   }
6374   tmp___2 = mk_inuse_bszB(bszB);   6377   tmp___2 = mk_inuse_bszB(bszB);
6375   set_bszB(b, tmp___2);   6378   set_bszB(b, tmp___2);
6376   set_prev_b(b, (Block *)((void *)0));   6379   set_prev_b(b, (Block *)((void *)0));
6377   set_next_b(b, (Block *)((void *)0));   6380   set_next_b(b, (Block *)((void *)0));
6378   if (! a->clientmem) {   6381   if (! a->clientmem) {
6379     i = (UInt )0;   6382     i = (UInt )0;
6380     while ((SizeT )i < a->rz_szB) {   6383     while ((SizeT )i < a->rz_szB) {
6381       set_rz_lo_byte(b, i, (UByte )(((Addr )b & 255UL) ^ 49UL));   6384       set_rz_lo_byte(b, i, (UByte )(((Addr )b & 255UL) ^ 49UL));
6382       set_rz_hi_byte(b, i, (UByte )(((Addr )b & 255UL) ^ 124UL));   6385       set_rz_hi_byte(b, i, (UByte )(((Addr )b & 255UL) ^ 124UL));
6383       i ++;   6386       i ++;
6384     }   6387     }
6385   } else {   6388   } else {
6386     6389  
6387   }   6390   }
6388   return;   6391   return;
6389 }   6392 }
6390 }   6393 }
6391 static void unlinkBlock(Arena *a , Block *b , UInt listno )   6394 static void unlinkBlock(Arena *a , Block *b , UInt listno )
6392 {   6395 {
6393   long tmp ;   6396   long tmp ;
6394   Block *tmp___0 ;   6397   Block *tmp___0 ;
6395   int tmp___1 ;   6398   int tmp___1 ;
6396   long tmp___2 ;   6399   long tmp___2 ;
6397   Block *b_prev ;   6400   Block *b_prev ;
6398   Block *tmp___3 ;   6401   Block *tmp___3 ;
6399   Block *b_next ;   6402   Block *b_next ;
6400   Block *tmp___4 ;   6403   Block *tmp___4 ;
6401   Block *tmp___5 ;   6404   Block *tmp___5 ;
6402     6405  
6403   {   6406   {
6404   tmp = __builtin_expect((long )(! (! (listno < 112U))), 1L);   6407   tmp = __builtin_expect((long )(! (! (listno < 112U))), 1L);
6405   if (tmp) {   6408   if (tmp) {
6406     6409  
6407   } else {   6410   } else {
6408     vgPlain_assert_fail((Bool )1, (Char const   *)"listno < N_MALLOC_LISTS",   6411     vgPlain_assert_fail((Bool )1, (Char const   *)"listno < N_MALLOC_LISTS",
6409                         (Char const   *)"m_mallocfree.c", 1402,   6412                         (Char const   *)"m_mallocfree.c", 1402,
6410                         (Char const   *)"unlinkBlock", "");   6413                         (Char const   *)"unlinkBlock", "");
6411   }   6414   }
6412   tmp___5 = get_prev_b(b);   6415   tmp___5 = get_prev_b(b);
6413   if ((unsigned int )tmp___5 == (unsigned int )b) {   6416   if ((unsigned int )tmp___5 == (unsigned int )b) {
6414     tmp___0 = get_next_b(b);   6417     tmp___0 = get_next_b(b);
6415     if ((unsigned int )tmp___0 == (unsigned int )b) {   6418     if ((unsigned int )tmp___0 == (unsigned int )b) {
6416       tmp___1 = 1;   6419       tmp___1 = 1;
6417     } else {   6420     } else {
6418       tmp___1 = 0;   6421       tmp___1 = 0;
6419     }   6422     }
6420     tmp___2 = __builtin_expect((long )tmp___1, 1L);   6423     tmp___2 = __builtin_expect((long )tmp___1, 1L);
6421     if (tmp___2) {   6424     if (tmp___2) {
6422     6425  
6423     } else {   6426     } else {
6424       vgPlain_assert_fail((Bool )1, (Char const   *)"get_next_b(b) == b",   6427       vgPlain_assert_fail((Bool )1, (Char const   *)"get_next_b(b) == b",
6425                           (Char const   *)"m_mallocfree.c", 1405,   6428                           (Char const   *)"m_mallocfree.c", 1405,
6426                           (Char const   *)"unlinkBlock", "");   6429                           (Char const   *)"unlinkBlock", "");
6427     }   6430     }
6428     a->freelist[listno] = (Block *)((void *)0);   6431     a->freelist[listno] = (Block *)((void *)0);
6429   } else {   6432   } else {
6430     tmp___3 = get_prev_b(b);   6433     tmp___3 = get_prev_b(b);
6431     b_prev = tmp___3;   6434     b_prev = tmp___3;
6432     tmp___4 = get_next_b(b);   6435     tmp___4 = get_next_b(b);
6433     b_next = tmp___4;   6436     b_next = tmp___4;
6434     a->freelist[listno] = b_prev;   6437     a->freelist[listno] = b_prev;
6435     set_next_b(b_prev, b_next);   6438     set_next_b(b_prev, b_next);
6436     set_prev_b(b_next, b_prev);   6439     set_prev_b(b_next, b_prev);
6437     swizzle(a, listno);   6440     swizzle(a, listno);
6438   }   6441   }
6439   set_prev_b(b, (Block *)((void *)0));   6442   set_prev_b(b, (Block *)((void *)0));
6440   set_next_b(b, (Block *)((void *)0));   6443   set_next_b(b, (Block *)((void *)0));
6441   return;   6444   return;
6442 }   6445 }
6443 }   6446 }
6444 __inline static SizeT align_req_pszB(SizeT req_pszB )   6447 __inline static SizeT align_req_pszB(SizeT req_pszB )
6445 {   6448 {
6446   SizeT n ;   6449   SizeT n ;
6447     6450  
6448   {   6451   {
6449   n = (SizeT )7;   6452   n = (SizeT )7;
6450   return ((req_pszB + n) & ~ n);   6453   return ((req_pszB + n) & ~ n);
6451 }   6454 }
6452 }   6455 }
6453 void *vgPlain_arena_malloc(ArenaId aid , HChar *cc , SizeT req_pszB )   6456 void *vgPlain_arena_malloc(ArenaId aid , HChar *cc , SizeT req_pszB )
6454 {   6457 {
6455   SizeT req_bszB ;   6458   SizeT req_bszB ;
6456   SizeT frag_bszB ;   6459   SizeT frag_bszB ;
6457   SizeT b_bszB ;   6460   SizeT b_bszB ;
6458   UInt lno ;   6461   UInt lno ;
6459   UInt i ;   6462   UInt i ;
6460   Superblock *new_sb ;   6463   Superblock *new_sb ;
6461   Block *b ;   6464   Block *b ;
6462   Arena *a ;   6465   Arena *a ;
6463   void *v ;   6466   void *v ;
6464   UWord stats__nsearches ;   6467   UWord stats__nsearches ;
6465   long tmp ;   6468   long tmp ;
6466   long tmp___0 ;   6469   long tmp___0 ;
6467   UWord nsearches_this_level ;   6470   UWord nsearches_this_level ;
6468   long tmp___1 ;   6471   long tmp___1 ;
6469   long tmp___2 ;   6472   long tmp___2 ;
6470   long tmp___3 ;   6473   long tmp___3 ;
6471   long tmp___4 ;   6474   long tmp___4 ;
6472   long tmp___5 ;   6475   long tmp___5 ;
6473   Superblock **array ;   6476   Superblock **array ;
6474   SysRes sres ;   6477   SysRes sres ;
6475   SysRes tmp___6 ;   6478   SysRes tmp___6 ;
6476   Bool tmp___7 ;   6479   Bool tmp___7 ;
6477   UWord tmp___8 ;   6480   UWord tmp___8 ;
6478   long tmp___9 ;   6481   long tmp___9 ;
6479   SizeT tmp___10 ;   6482   SizeT tmp___10 ;
6480   long tmp___11 ;   6483   long tmp___11 ;
6481   long tmp___12 ;   6484   long tmp___12 ;
6482   long tmp___13 ;   6485   long tmp___13 ;
6483   long tmp___14 ;   6486   long tmp___14 ;
6484   SizeT tmp___15 ;   6487   SizeT tmp___15 ;
6485   UInt tmp___16 ;   6488   UInt tmp___16 ;
6486   SizeT tmp___17 ;   6489   SizeT tmp___17 ;
6487   SizeT loaned ;   6490   SizeT loaned ;
6488   SizeT tmp___18 ;   6491   SizeT tmp___18 ;
6489   UByte *tmp___19 ;   6492   UByte *tmp___19 ;
6490   long tmp___20 ;   6493   long tmp___20 ;
6491     6494  
6492   {   6495   {
6493   new_sb = (Superblock *)((void *)0);   6496   new_sb = (Superblock *)((void *)0);
6494   b = (Block *)((void *)0);   6497   b = (Block *)((void *)0);
6495   stats__nsearches = (UWord )0;   6498   stats__nsearches = (UWord )0;
6496   ensure_mm_init(aid);   6499   ensure_mm_init(aid);
6497   a = arenaId_to_ArenaP(aid);   6500   a = arenaId_to_ArenaP(aid);
6498   tmp = __builtin_expect((long )(! (! (req_pszB < 4294967295UL))), 1L);   6501   tmp = __builtin_expect((long )(! (! (req_pszB < 4294967295UL))), 1L);
6499   if (tmp) {   6502   if (tmp) {
6500     6503  
6501   } else {   6504   } else {
6502     vgPlain_assert_fail((Bool )1, (Char const   *)"req_pszB < MAX_PSZB",   6505     vgPlain_assert_fail((Bool )1, (Char const   *)"req_pszB < MAX_PSZB",
6503                         (Char const   *)"m_mallocfree.c", 1445,   6506                         (Char const   *)"m_mallocfree.c", 1445,
6504                         (Char const   *)"vgPlain_arena_malloc", "");   6507                         (Char const   *)"vgPlain_arena_malloc", "");
6505   }   6508   }
6506   req_pszB = align_req_pszB(req_pszB);   6509   req_pszB = align_req_pszB(req_pszB);
6507   req_bszB = pszB_to_bszB(a, req_pszB);   6510   req_bszB = pszB_to_bszB(a, req_pszB);
6508   tmp___0 = __builtin_expect((long )(! (! cc)), 1L);   6511   tmp___0 = __builtin_expect((long )(! (! cc)), 1L);
6509   if (tmp___0) {   6512   if (tmp___0) {
6510     6513  
6511   } else {   6514   } else {
6512     vgPlain_assert_fail((Bool )1, (Char const   *)"cc",   6515     vgPlain_assert_fail((Bool )1, (Char const   *)"cc",
6513                         (Char const   *)"m_mallocfree.c", 1451,   6516                         (Char const   *)"m_mallocfree.c", 1451,
6514                         (Char const   *)"vgPlain_arena_malloc", "");   6517                         (Char const   *)"vgPlain_arena_malloc", "");
6515   }   6518   }
6516   lno = pszB_to_listNo(req_pszB);   6519   lno = pszB_to_listNo(req_pszB);
6517   while (lno < 112U) {   6520   while (lno < 112U) {
6518     nsearches_this_level = (UWord )0;   6521     nsearches_this_level = (UWord )0;
6519     b = a->freelist[lno];   6522     b = a->freelist[lno];
6520     if ((unsigned int )((void *)0) == (unsigned int )b) {   6523     if ((unsigned int )((void *)0) == (unsigned int )b) {
6521       goto __Cont;   6524       goto __Cont;
6522     } else {   6525     } else {
6523     6526  
6524     }   6527     }
6525     while (1) {   6528     while (1) {
6526       stats__nsearches ++;   6529       stats__nsearches ++;
6527       nsearches_this_level ++;   6530       nsearches_this_level ++;
6528       tmp___2 = __builtin_expect((long )(! (! (nsearches_this_level >= 100UL))),   6531       tmp___2 = __builtin_expect((long )(! (! (nsearches_this_level >= 100UL))),
6529                                  0L);   6532                                  0L);
6530       if (tmp___2) {   6533       if (tmp___2) {
6531         if (lno < 111U) {   6534         if (lno < 111U) {
6532           b = a->freelist[lno];   6535           b = a->freelist[lno];
6533           tmp___1 = __builtin_expect((long )(! (! b)), 1L);   6536           tmp___1 = __builtin_expect((long )(! (! b)), 1L);
6534           if (tmp___1) {   6537           if (tmp___1) {
6535     6538  
6536           } else {   6539           } else {
6537             vgPlain_assert_fail((Bool )1, (Char const   *)"b",   6540             vgPlain_assert_fail((Bool )1, (Char const   *)"b",
6538                                 (Char const   *)"m_mallocfree.c", 1488,   6541                                 (Char const   *)"m_mallocfree.c", 1488,
6539                                 (Char const   *)"vgPlain_arena_malloc", "");   6542                                 (Char const   *)"vgPlain_arena_malloc", "");
6540           }   6543           }
6541           a->freelist[lno] = get_next_b(b);   6544           a->freelist[lno] = get_next_b(b);
6542           break;   6545           break;
6543         } else {   6546         } else {
6544     6547  
6545         }   6548         }
6546       } else {   6549       } else {
6547     6550  
6548       }   6551       }
6549       b_bszB = get_bszB(b);   6552       b_bszB = get_bszB(b);
6550       if (b_bszB >= req_bszB) {   6553       if (b_bszB >= req_bszB) {
6551         goto obtained_block;   6554         goto obtained_block;
6552       } else {   6555       } else {
6553     6556  
6554       }   6557       }
6555       b = get_next_b(b);   6558       b = get_next_b(b);
6556       if ((unsigned int )b == (unsigned int )a->freelist[lno]) {   6559       if ((unsigned int )b == (unsigned int )a->freelist[lno]) {
6557         break;   6560         break;
6558       } else {   6561       } else {
6559     6562  
6560       }   6563       }
6561     }   6564     }
6562     __Cont: /* CIL Label */   6565     __Cont: /* CIL Label */
6563     lno ++;   6566     lno ++;
6564   }   6567   }
6565   tmp___3 = __builtin_expect((long )(! (! (lno == 112U))), 1L);   6568   tmp___3 = __builtin_expect((long )(! (! (lno == 112U))), 1L);
6566   if (tmp___3) {   6569   if (tmp___3) {
6567     6570  
6568   } else {   6571   } else {
6569     vgPlain_assert_fail((Bool )1, (Char const   *)"lno == N_MALLOC_LISTS",   6572     vgPlain_assert_fail((Bool )1, (Char const   *)"lno == N_MALLOC_LISTS",
6570                         (Char const   *)"m_mallocfree.c", 1500,   6573                         (Char const   *)"m_mallocfree.c", 1500,
6571                         (Char const   *)"vgPlain_arena_malloc", "");   6574                         (Char const   *)"vgPlain_arena_malloc", "");
6572   }   6575   }
6573   new_sb = newSuperblock(a, req_bszB);   6576   new_sb = newSuperblock(a, req_bszB);
6574   if ((unsigned int )((void *)0) == (unsigned int )new_sb) {   6577   if ((unsigned int )((void *)0) == (unsigned int )new_sb) {
6575     tmp___4 = __builtin_expect((long )(! (! (3 == aid))), 1L);   6578     tmp___4 = __builtin_expect((long )(! (! (3 == aid))), 1L);
6576     if (tmp___4) {   6579     if (tmp___4) {
6577     6580  
6578     } else {   6581     } else {
6579       vgPlain_assert_fail((Bool )1, (Char const   *)"VG_AR_CLIENT == aid",   6582       vgPlain_assert_fail((Bool )1, (Char const   *)"VG_AR_CLIENT == aid",
6580                           (Char const   *)"m_mallocfree.c", 1505,   6583                           (Char const   *)"m_mallocfree.c", 1505,
6581                           (Char const   *)"vgPlain_arena_malloc", "");   6584                           (Char const   *)"vgPlain_arena_malloc", "");
6582     }   6585     }
6583     return ((void *)0);   6586     return ((void *)0);
6584   } else {   6587   } else {
6585     6588  
6586   }   6589   }
6587   tmp___5 = __builtin_expect((long )(! (! (a->sblocks_used <= a->sblocks_size))),   6590   tmp___5 = __builtin_expect((long )(! (! (a->sblocks_used <= a->sblocks_size))),
6588                              1L);   6591                              1L);
6589   if (tmp___5) {   6592   if (tmp___5) {
6590     6593  
6591   } else {   6594   } else {
6592     vgPlain_assert_fail((Bool )1,   6595     vgPlain_assert_fail((Bool )1,
6593                         (Char const   *)"a->sblocks_used <= a->sblocks_size",   6596                         (Char const   *)"a->sblocks_used <= a->sblocks_size",
6594                         (Char const   *)"m_mallocfree.c", 1509,   6597                         (Char const   *)"m_mallocfree.c", 1509,
6595                         (Char const   *)"vgPlain_arena_malloc", "");   6598                         (Char const   *)"vgPlain_arena_malloc", "");
6596   }   6599   }
6597   if (a->sblocks_used == a->sblocks_size) {   6600   if (a->sblocks_used == a->sblocks_size) {
6598     tmp___6 = vgPlain_am_sbrk_anon_float_valgrind(((SizeT )sizeof(Superblock *) * a->sblocks_size) * 2UL);   6601     tmp___6 = vgPlain_am_sbrk_anon_float_valgrind(((SizeT )sizeof(Superblock *) * a->sblocks_size) * 2UL);
6599     sres = tmp___6;   6602     sres = tmp___6;
6600     tmp___7 = sr_isError(sres);   6603     tmp___7 = sr_isError(sres);
6601     if (tmp___7) {   6604     if (tmp___7) {
6602       vgPlain_out_of_memory_NORETURN((HChar *)"arena_init",   6605       vgPlain_out_of_memory_NORETURN((HChar *)"arena_init",
6603                                      ((SizeT )sizeof(Superblock *) * a->sblocks_size) * 2UL);   6606                                      ((SizeT )sizeof(Superblock *) * a->sblocks_size) * 2UL);
6604     } else {   6607     } else {
6605     6608  
6606     }   6609     }
6607     tmp___8 = sr_Res(sres);   6610     tmp___8 = sr_Res(sres);
6608     array = (Superblock **)tmp___8;   6611     array = (Superblock **)tmp___8;
6609     i = (UInt )0;   6612     i = (UInt )0;
6610     while ((SizeT )i < a->sblocks_used) {   6613     while ((SizeT )i < a->sblocks_used) {
6611       *(array + i) = *(a->sblocks + i);   6614       *(array + i) = *(a->sblocks + i);
6612       i ++;   6615       i ++;
6613     }   6616     }
6614     a->sblocks_size *= 2UL;   6617     a->sblocks_size *= 2UL;
6615     a->sblocks = array;   6618     a->sblocks = array;
6616     vgPlain_debugLog(1, "mallocfree",   6619     vgPlain_debugLog(1, "mallocfree",
6617                      "sblock array for arena `%s\' resized to %ld\n", a->name,   6620                      "sblock array for arena `%s\' resized to %ld\n", a->name,
6618                      a->sblocks_size);   6621                      a->sblocks_size);
6619   } else {   6622   } else {
6620     6623  
6621   }   6624   }
6622   tmp___9 = __builtin_expect((long )(! (! (a->sblocks_used < a->sblocks_size))),   6625   tmp___9 = __builtin_expect((long )(! (! (a->sblocks_used < a->sblocks_size))),
6623                              1L);   6626                              1L);
6624   if (tmp___9) {   6627   if (tmp___9) {
6625     6628  
6626   } else {   6629   } else {
6627     vgPlain_assert_fail((Bool )1,   6630     vgPlain_assert_fail((Bool )1,
6628                         (Char const   *)"a->sblocks_used < a->sblocks_size",   6631                         (Char const   *)"a->sblocks_used < a->sblocks_size",
6629                         (Char const   *)"m_mallocfree.c", 1529,   6632                         (Char const   *)"m_mallocfree.c", 1529,
6630                         (Char const   *)"vgPlain_arena_malloc", "");   6633                         (Char const   *)"vgPlain_arena_malloc", "");
6631   }   6634   }
6632   i = (UInt )a->sblocks_used;   6635   i = (UInt )a->sblocks_used;
6633   while (i > 0U) {   6636   while (i > 0U) {
6634     if ((unsigned int )*(a->sblocks + (i - 1U)) > (unsigned int )new_sb) {   6637     if ((unsigned int )*(a->sblocks + (i - 1U)) > (unsigned int )new_sb) {
6635       *(a->sblocks + i) = *(a->sblocks + (i - 1U));   6638       *(a->sblocks + i) = *(a->sblocks + (i - 1U));
6636     } else {   6639     } else {
6637       break;   6640       break;
6638     }   6641     }
6639     i --;   6642     i --;
6640   }   6643   }
6641   *(a->sblocks + i) = new_sb;   6644   *(a->sblocks + i) = new_sb;
6642   (a->sblocks_used) ++;   6645   (a->sblocks_used) ++;
6643   b = (Block *)(& new_sb->payload_bytes[0]);   6646   b = (Block *)(& new_sb->payload_bytes[0]);
6644   tmp___10 = bszB_to_pszB(a, new_sb->n_payload_bytes);   6647   tmp___10 = bszB_to_pszB(a, new_sb->n_payload_bytes);
6645   lno = pszB_to_listNo(tmp___10);   6648   lno = pszB_to_listNo(tmp___10);
6646   mkFreeBlock(a, b, new_sb->n_payload_bytes, lno);   6649   mkFreeBlock(a, b, new_sb->n_payload_bytes, lno);
6647   if (vgPlain_clo_profile_heap) {   6650   if (vgPlain_clo_profile_heap) {
6648     set_cc(b, (HChar *)"admin.free-new-sb-1");   6651     set_cc(b, (HChar *)"admin.free-new-sb-1");
6649   } else {   6652   } else {
6650     6653  
6651   }   6654   }
6652   obtained_block:   6655   obtained_block:
6653   tmp___11 = __builtin_expect((long )(! (! ((unsigned int )b != (unsigned int )((void *)0)))),   6656   tmp___11 = __builtin_expect((long )(! (! ((unsigned int )b != (unsigned int )((void *)0)))),
6654                               1L);   6657                               1L);
6655   if (tmp___11) {   6658   if (tmp___11) {
6656     6659  
6657   } else {   6660   } else {
6658     vgPlain_assert_fail((Bool )1, (Char const   *)"b != NULL",   6661     vgPlain_assert_fail((Bool )1, (Char const   *)"b != NULL",
6659                         (Char const   *)"m_mallocfree.c", 1552,   6662                         (Char const   *)"m_mallocfree.c", 1552,
6660                         (Char const   *)"vgPlain_arena_malloc", "");   6663                         (Char const   *)"vgPlain_arena_malloc", "");
6661   }   6664   }
6662   tmp___12 = __builtin_expect((long )(! (! (lno < 112U))), 1L);   6665   tmp___12 = __builtin_expect((long )(! (! (lno < 112U))), 1L);
6663   if (tmp___12) {   6666   if (tmp___12) {
6664     6667  
6665   } else {   6668   } else {
6666     vgPlain_assert_fail((Bool )1, (Char const   *)"lno < N_MALLOC_LISTS",   6669     vgPlain_assert_fail((Bool )1, (Char const   *)"lno < N_MALLOC_LISTS",
6667                         (Char const   *)"m_mallocfree.c", 1553,   6670                         (Char const   *)"m_mallocfree.c", 1553,
6668                         (Char const   *)"vgPlain_arena_malloc", "");   6671                         (Char const   *)"vgPlain_arena_malloc", "");
6669   }   6672   }
6670   tmp___13 = __builtin_expect((long )(! (! ((unsigned int )a->freelist[lno] != (unsigned int )((void *)0)))),   6673   tmp___13 = __builtin_expect((long )(! (! ((unsigned int )a->freelist[lno] != (unsigned int )((void *)0)))),
6671                               1L);   6674                               1L);
6672   if (tmp___13) {   6675   if (tmp___13) {
6673     6676  
6674   } else {   6677   } else {
6675     vgPlain_assert_fail((Bool )1, (Char const   *)"a->freelist[lno] != NULL",   6678     vgPlain_assert_fail((Bool )1, (Char const   *)"a->freelist[lno] != NULL",
6676                         (Char const   *)"m_mallocfree.c", 1554,   6679                         (Char const   *)"m_mallocfree.c", 1554,
6677                         (Char const   *)"vgPlain_arena_malloc", "");   6680                         (Char const   *)"vgPlain_arena_malloc", "");
6678   }   6681   }
6679   b_bszB = get_bszB(b);   6682   b_bszB = get_bszB(b);
6680   tmp___14 = __builtin_expect((long )(! (! (b_bszB >= req_bszB))), 1L);   6683   tmp___14 = __builtin_expect((long )(! (! (b_bszB >= req_bszB))), 1L);
6681   if (tmp___14) {   6684   if (tmp___14) {
6682     6685  
6683   } else {   6686   } else {
6684     vgPlain_assert_fail((Bool )1, (Char const   *)"b_bszB >= req_bszB",   6687     vgPlain_assert_fail((Bool )1, (Char const   *)"b_bszB >= req_bszB",
6685                         (Char const   *)"m_mallocfree.c", 1558,   6688                         (Char const   *)"m_mallocfree.c", 1558,
6686                         (Char const   *)"vgPlain_arena_malloc", "");   6689                         (Char const   *)"vgPlain_arena_malloc", "");
6687   }   6690   }
6688   frag_bszB = b_bszB - req_bszB;   6691   frag_bszB = b_bszB - req_bszB;
6689   tmp___17 = min_useful_bszB(a);   6692   tmp___17 = min_useful_bszB(a);
6690   if (frag_bszB >= tmp___17) {   6693   if (frag_bszB >= tmp___17) {
6691     if ((unsigned int )((void *)0) == (unsigned int )new_sb) {   6694     if ((unsigned int )((void *)0) == (unsigned int )new_sb) {
6692       goto _L___0;   6695       goto _L___0;
6693     } else   6696     } else
6694     if (! new_sb->unsplittable) {   6697     if (! new_sb->unsplittable) {
6695       _L___0: /* CIL Label */   6698       _L___0: /* CIL Label */
6696       unlinkBlock(a, b, lno);   6699       unlinkBlock(a, b, lno);
6697       mkInuseBlock(a, b, req_bszB);   6700       mkInuseBlock(a, b, req_bszB);
6698       if (vgPlain_clo_profile_heap) {   6701       if (vgPlain_clo_profile_heap) {
6699         set_cc(b, cc);   6702         set_cc(b, cc);
6700       } else {   6703       } else {
6701     6704  
6702       }   6705       }
6703       tmp___15 = bszB_to_pszB(a, frag_bszB);   6706       tmp___15 = bszB_to_pszB(a, frag_bszB);
6704       tmp___16 = pszB_to_listNo(tmp___15);   6707       tmp___16 = pszB_to_listNo(tmp___15);
6705       mkFreeBlock(a, b + req_bszB, frag_bszB, tmp___16);   6708       mkFreeBlock(a, b + req_bszB, frag_bszB, tmp___16);
6706       if (vgPlain_clo_profile_heap) {   6709       if (vgPlain_clo_profile_heap) {
6707         set_cc(b + req_bszB, (HChar *)"admin.fragmentation-1");   6710         set_cc(b + req_bszB, (HChar *)"admin.fragmentation-1");
6708       } else {   6711       } else {
6709     6712  
6710       }   6713       }
6711       b_bszB = get_bszB(b);   6714       b_bszB = get_bszB(b);
6712     } else {   6715     } else {
6713       goto _L;   6716       goto _L;
6714     }   6717     }
6715   } else {   6718   } else {
6716     _L: /* CIL Label */   6719     _L: /* CIL Label */
6717     unlinkBlock(a, b, lno);   6720     unlinkBlock(a, b, lno);
6718     mkInuseBlock(a, b, b_bszB);   6721     mkInuseBlock(a, b, b_bszB);
6719     if (vgPlain_clo_profile_heap) {   6722     if (vgPlain_clo_profile_heap) {
6720       set_cc(b, cc);   6723       set_cc(b, cc);
6721     } else {   6724     } else {
6722     6725  
6723     }   6726     }
6724   }   6727   }
6725   tmp___18 = bszB_to_pszB(a, b_bszB);   6728   tmp___18 = bszB_to_pszB(a, b_bszB);
6726   loaned = tmp___18;   6729   loaned = tmp___18;
6727   a->stats__bytes_on_loan += loaned;   6730   a->stats__bytes_on_loan += loaned;
6728   if (a->stats__bytes_on_loan > a->stats__bytes_on_loan_max) {   6731   if (a->stats__bytes_on_loan > a->stats__bytes_on_loan_max) {
6729     a->stats__bytes_on_loan_max = a->stats__bytes_on_loan;   6732     a->stats__bytes_on_loan_max = a->stats__bytes_on_loan;
6730     if (a->stats__bytes_on_loan_max >= a->next_profile_at) {   6733     if (a->stats__bytes_on_loan_max >= a->next_profile_at) {
6731       a->next_profile_at = (SizeT )(((ULong )a->stats__bytes_on_loan_max * 105ULL) / 100ULL);   6734       a->next_profile_at = (SizeT )(((ULong )a->stats__bytes_on_loan_max * 105ULL) / 100ULL);
6732       if (vgPlain_clo_profile_heap) {   6735       if (vgPlain_clo_profile_heap) {
6733         cc_analyse_alloc_arena(aid);   6736         cc_analyse_alloc_arena(aid);
6734       } else {   6737       } else {
6735     6738  
6736       }   6739       }
6737     } else {   6740     } else {
6738     6741  
6739     }   6742     }
6740   } else {   6743   } else {
6741     6744  
6742   }   6745   }
6743   (a->stats__tot_blocks) ++;   6746   (a->stats__tot_blocks) ++;
6744   a->stats__tot_bytes += (ULong )loaned;   6747   a->stats__tot_bytes += (ULong )loaned;
6745   a->stats__nsearches += (ULong )stats__nsearches;   6748   a->stats__nsearches += (ULong )stats__nsearches;
6746   tmp___19 = get_block_payload(a, b);   6749   tmp___19 = get_block_payload(a, b);
6747   v = (void *)tmp___19;   6750   v = (void *)tmp___19;
6748   tmp___20 = __builtin_expect((long )(! (! (((Addr )v & 7UL) == 0UL))), 1L);   6751   tmp___20 = __builtin_expect((long )(! (! (((Addr )v & 7UL) == 0UL))), 1L);
6749   if (tmp___20) {   6752   if (tmp___20) {
6750     6753  
6751   } else {   6754   } else {
6752     vgPlain_assert_fail((Bool )1,   6755     vgPlain_assert_fail((Bool )1,
6753                         (Char const   *)"(((Addr)v) & (VG_MIN_MALLOC_SZB-1)) == 0",   6756                         (Char const   *)"(((Addr)v) & (VG_MIN_MALLOC_SZB-1)) == 0",
6754                         (Char const   *)"m_mallocfree.c", 1608,   6757                         (Char const   *)"m_mallocfree.c", 1608,
6755                         (Char const   *)"vgPlain_arena_malloc", "");   6758                         (Char const   *)"vgPlain_arena_malloc", "");
6756   }   6759   }
6757   while (1) {   6760   while (1) {
6758     break;   6761     break;
6759   }   6762   }
6760   return (v);   6763   return (v);
6761 }   6764 }
6762 }   6765 }
6763 static void deferred_reclaimSuperblock(Arena *a , Superblock *sb )   6766 static void deferred_reclaimSuperblock(Arena *a , Superblock *sb )
6764 {   6767 {
6765   char const   *tmp ;   6768   char const   *tmp ;
6766   char const   *tmp___0 ;   6769   char const   *tmp___0 ;
6767   char const   *tmp___1 ;   6770   char const   *tmp___1 ;
6768   UByte *def_sb_start ;   6771   UByte *def_sb_start ;
6769   UByte *def_sb_end ;   6772   UByte *def_sb_end ;
6770   Superblock *def_sb ;   6773   Superblock *def_sb ;
6771   Block *b ;   6774   Block *b ;
6772   Bool tmp___2 ;   6775   Bool tmp___2 ;
6773   int tmp___3 ;   6776   int tmp___3 ;
6774   long tmp___4 ;   6777   long tmp___4 ;
6775   UInt b_listno ;   6778   UInt b_listno ;
6776   SizeT b_bszB ;   6779   SizeT b_bszB ;
6777   SizeT b_pszB ;   6780   SizeT b_pszB ;
6778   Bool tmp___5 ;   6781   Bool tmp___5 ;
6779     6782  
6780   {   6783   {
6781   if ((unsigned int )sb == (unsigned int )((void *)0)) {   6784   if ((unsigned int )sb == (unsigned int )((void *)0)) {
6782     if (! a->deferred_reclaimed_sb) {   6785     if (! a->deferred_reclaimed_sb) {
6783       return;   6786       return;
6784     } else {   6787     } else {
6785     6788  
6786     }   6789     }
6787     if (a->clientmem) {   6790     if (a->clientmem) {
6788       tmp = "CLIENT";   6791       tmp = "CLIENT";
6789     } else {   6792     } else {
6790       tmp = "VALGRIND";   6793       tmp = "VALGRIND";
6791     }   6794     }
6792     vgPlain_debugLog(1, "mallocfree",   6795     vgPlain_debugLog(1, "mallocfree",
6793                      "deferred_reclaimSuperblock NULL (prev %p) owner %s/%s\n",   6796                      "deferred_reclaimSuperblock NULL (prev %p) owner %s/%s\n",
6794                      a->deferred_reclaimed_sb, tmp, a->name);   6797                      a->deferred_reclaimed_sb, tmp, a->name);
6795   } else {   6798   } else {
6796     if (a->clientmem) {   6799     if (a->clientmem) {
6797       tmp___0 = "CLIENT";   6800       tmp___0 = "CLIENT";
6798     } else {   6801     } else {
6799       tmp___0 = "VALGRIND";   6802       tmp___0 = "VALGRIND";
6800     }   6803     }
6801     if (sb->unsplittable) {   6804     if (sb->unsplittable) {
6802       tmp___1 = "unsplittable";   6805       tmp___1 = "unsplittable";
6803     } else {   6806     } else {
6804       tmp___1 = "";   6807       tmp___1 = "";
6805     }   6808     }
6806     vgPlain_debugLog(1, "mallocfree",   6809     vgPlain_debugLog(1, "mallocfree",
6807                      "deferred_reclaimSuperblock at %p (pszB %7ld) %s (prev %p) owner %s/%s\n",   6810                      "deferred_reclaimSuperblock at %p (pszB %7ld) %s (prev %p) owner %s/%s\n",
6808                      sb, sb->n_payload_bytes, tmp___1, a->deferred_reclaimed_sb,   6811                      sb, sb->n_payload_bytes, tmp___1, a->deferred_reclaimed_sb,
6809                      tmp___0, a->name);   6812                      tmp___0, a->name);
6810   }   6813   }
6811   if (a->deferred_reclaimed_sb) {   6814   if (a->deferred_reclaimed_sb) {
6812     if ((unsigned int )a->deferred_reclaimed_sb != (unsigned int )sb) {   6815     if ((unsigned int )a->deferred_reclaimed_sb != (unsigned int )sb) {
6813       def_sb = a->deferred_reclaimed_sb;   6816       def_sb = a->deferred_reclaimed_sb;
6814       def_sb_start = & def_sb->payload_bytes[0];   6817       def_sb_start = & def_sb->payload_bytes[0];
6815       def_sb_end = & def_sb->payload_bytes[def_sb->n_payload_bytes - 1UL];   6818       def_sb_end = & def_sb->payload_bytes[def_sb->n_payload_bytes - 1UL];
6816       b = (Block *)def_sb_start;   6819       b = (Block *)def_sb_start;
6817       tmp___2 = blockSane(a, b);   6820       tmp___2 = blockSane(a, b);
6818       if (tmp___2) {   6821       if (tmp___2) {
6819         tmp___3 = 1;   6822         tmp___3 = 1;
6820       } else {   6823       } else {
6821         tmp___3 = 0;   6824         tmp___3 = 0;
6822       }   6825       }
6823       tmp___4 = __builtin_expect((long )tmp___3, 1L);   6826       tmp___4 = __builtin_expect((long )tmp___3, 1L);
6824       if (tmp___4) {   6827       if (tmp___4) {
6825     6828  
6826       } else {   6829       } else {
6827         vgPlain_assert_fail((Bool )1, (Char const   *)"blockSane(a, b)",   6830         vgPlain_assert_fail((Bool )1, (Char const   *)"blockSane(a, b)",
6828                             (Char const   *)"m_mallocfree.c", 1689,   6831                             (Char const   *)"m_mallocfree.c", 1689,
6829                             (Char const   *)"deferred_reclaimSuperblock", "");   6832                             (Char const   *)"deferred_reclaimSuperblock", "");
6830       }   6833       }
6831       tmp___5 = is_inuse_block(b);   6834       tmp___5 = is_inuse_block(b);
6832       if (tmp___5) {   6835       if (tmp___5) {
6833     6836  
6834       } else {   6837       } else {
6835         b_bszB = get_bszB(b);   6838         b_bszB = get_bszB(b);
6836         b_pszB = bszB_to_pszB(a, b_bszB);   6839         b_pszB = bszB_to_pszB(a, b_bszB);
6837         if ((unsigned int )((b + b_bszB) - 1) == (unsigned int )((Block *)def_sb_end)) {   6840         if ((unsigned int )((b + b_bszB) - 1) == (unsigned int )((Block *)def_sb_end)) {
6838           b_listno = pszB_to_listNo(b_pszB);   6841           b_listno = pszB_to_listNo(b_pszB);
6839           unlinkBlock(a, b, b_listno);   6842           unlinkBlock(a, b, b_listno);
6840           reclaimSuperblock(a, def_sb);   6843           reclaimSuperblock(a, def_sb);
6841           a->deferred_reclaimed_sb = (Superblock *)((void *)0);   6844           a->deferred_reclaimed_sb = (Superblock *)((void *)0);
6842         } else {   6845         } else {
6843     6846  
6844         }   6847         }
6845       }   6848       }
6846     } else {   6849     } else {
6847     6850  
6848     }   6851     }
6849   } else {   6852   } else {
6850     6853  
6851   }   6854   }
6852   a->deferred_reclaimed_sb = sb;   6855   a->deferred_reclaimed_sb = sb;
6853   return;   6856   return;
6854 }   6857 }
6855 }   6858 }
6856 void vgPlain_arena_free(ArenaId aid , void *ptr )   6859 void vgPlain_arena_free(ArenaId aid , void *ptr )
6857 {   6860 {
6858   Superblock *sb ;   6861   Superblock *sb ;
6859   UByte *sb_start ;   6862   UByte *sb_start ;
6860   UByte *sb_end ;   6863   UByte *sb_end ;
6861   Block *other_b ;   6864   Block *other_b ;
6862   Block *b ;   6865   Block *b ;
6863   SizeT b_bszB ;   6866   SizeT b_bszB ;
6864   SizeT b_pszB ;   6867   SizeT b_pszB ;
6865   SizeT other_bszB ;   6868   SizeT other_bszB ;
6866   UInt b_listno ;   6869   UInt b_listno ;
6867   Arena *a ;   6870   Arena *a ;
6868   Bool tmp ;   6871   Bool tmp ;
6869   int tmp___0 ;   6872   int tmp___0 ;
6870   long tmp___1 ;   6873   long tmp___1 ;
6871   SizeT tmp___2 ;   6874   SizeT tmp___2 ;
6872   UInt tmp___3 ;   6875   UInt tmp___3 ;
6873   SizeT tmp___4 ;   6876   SizeT tmp___4 ;
6874   Bool tmp___5 ;   6877   Bool tmp___5 ;
6875   long tmp___6 ;   6878   long tmp___6 ;
6876   SizeT tmp___7 ;   6879   SizeT tmp___7 ;
6877   SizeT tmp___8 ;   6880   SizeT tmp___8 ;
6878   UInt tmp___9 ;   6881   UInt tmp___9 ;
6879   SizeT tmp___10 ;   6882   SizeT tmp___10 ;
6880   Bool tmp___11 ;   6883   Bool tmp___11 ;
6881   long tmp___12 ;   6884   long tmp___12 ;
6882   SizeT tmp___13 ;   6885   SizeT tmp___13 ;
6883   long tmp___14 ;   6886   long tmp___14 ;
6884   long tmp___15 ;   6887   long tmp___15 ;
6885     6888  
6886   {   6889   {
6887   ensure_mm_init(aid);   6890   ensure_mm_init(aid);
6888   a = arenaId_to_ArenaP(aid);   6891   a = arenaId_to_ArenaP(aid);
6889   if ((unsigned int )ptr == (unsigned int )((void *)0)) {   6892   if ((unsigned int )ptr == (unsigned int )((void *)0)) {
6890     return;   6893     return;
6891   } else {   6894   } else {
6892     6895  
6893   }   6896   }
6894   b = get_payload_block(a, (UByte *)ptr);   6897   b = get_payload_block(a, (UByte *)ptr);
6895   if (aid != 3) {   6898   if (aid != 3) {
6896     tmp = blockSane(a, b);   6899     tmp = blockSane(a, b);
6897     if (tmp) {   6900     if (tmp) {
6898       tmp___0 = 1;   6901       tmp___0 = 1;
6899     } else {   6902     } else {
6900       tmp___0 = 0;   6903       tmp___0 = 0;
6901     }   6904     }
6902     tmp___1 = __builtin_expect((long )tmp___0, 1L);   6905     tmp___1 = __builtin_expect((long )tmp___0, 1L);
6903     if (tmp___1) {   6906     if (tmp___1) {
6904     6907  
6905     } else {   6908     } else {
6906       vgPlain_assert_fail((Bool )1, (Char const   *)"blockSane(a, b)",   6909       vgPlain_assert_fail((Bool )1, (Char const   *)"blockSane(a, b)",
6907                           (Char const   *)"m_mallocfree.c", 1739,   6910                           (Char const   *)"m_mallocfree.c", 1739,
6908                           (Char const   *)"vgPlain_arena_free", "");   6911                           (Char const   *)"vgPlain_arena_free", "");
6909     }   6912     }
6910   } else {   6913   } else {
6911     6914  
6912   }   6915   }
6913   b_bszB = get_bszB(b);   6916   b_bszB = get_bszB(b);
6914   b_pszB = bszB_to_pszB(a, b_bszB);   6917   b_pszB = bszB_to_pszB(a, b_bszB);
6915   sb = findSb(a, b);   6918   sb = findSb(a, b);
6916   sb_start = & sb->payload_bytes[0];   6919   sb_start = & sb->payload_bytes[0];
6917   sb_end = & sb->payload_bytes[sb->n_payload_bytes - 1UL];   6920   sb_end = & sb->payload_bytes[sb->n_payload_bytes - 1UL];
6918   a->stats__bytes_on_loan -= b_pszB;   6921   a->stats__bytes_on_loan -= b_pszB;
6919   if (aid != 3) {   6922   if (aid != 3) {
6920     vgPlain_memset(ptr, 221, b_pszB);   6923     vgPlain_memset(ptr, 221, b_pszB);
6921   } else {   6924   } else {
6922     6925  
6923   }   6926   }
6924   if (! sb->unsplittable) {   6927   if (! sb->unsplittable) {
6925     b_listno = pszB_to_listNo(b_pszB);   6928     b_listno = pszB_to_listNo(b_pszB);
6926     mkFreeBlock(a, b, b_bszB, b_listno);   6929     mkFreeBlock(a, b, b_bszB, b_listno);
6927     if (vgPlain_clo_profile_heap) {   6930     if (vgPlain_clo_profile_heap) {
6928       set_cc(b, (HChar *)"admin.free-1");   6931       set_cc(b, (HChar *)"admin.free-1");
6929     } else {   6932     } else {
6930     6933  
6931     }   6934     }
6932     other_b = b + b_bszB;   6935     other_b = b + b_bszB;
6933     tmp___7 = min_useful_bszB(a);   6936     tmp___7 = min_useful_bszB(a);
6934     if ((unsigned int )((other_b + tmp___7) - 1) <= (unsigned int )((Block *)sb_end)) {   6937     if ((unsigned int )((other_b + tmp___7) - 1) <= (unsigned int )((Block *)sb_end)) {
6935       other_bszB = get_bszB(other_b);   6938       other_bszB = get_bszB(other_b);
6936       tmp___5 = is_inuse_block(other_b);   6939       tmp___5 = is_inuse_block(other_b);
6937       if (tmp___5) {   6940       if (tmp___5) {
6938     6941  
6939       } else {   6942       } else {
6940         unlinkBlock(a, b, b_listno);   6943         unlinkBlock(a, b, b_listno);
6941         tmp___2 = bszB_to_pszB(a, other_bszB);   6944         tmp___2 = bszB_to_pszB(a, other_bszB);
6942         tmp___3 = pszB_to_listNo(tmp___2);   6945         tmp___3 = pszB_to_listNo(tmp___2);
6943         unlinkBlock(a, other_b, tmp___3);   6946         unlinkBlock(a, other_b, tmp___3);
6944         b_bszB += other_bszB;   6947         b_bszB += other_bszB;
6945         tmp___4 = bszB_to_pszB(a, b_bszB);   6948         tmp___4 = bszB_to_pszB(a, b_bszB);
6946         b_listno = pszB_to_listNo(tmp___4);   6949         b_listno = pszB_to_listNo(tmp___4);
6947         mkFreeBlock(a, b, b_bszB, b_listno);   6950         mkFreeBlock(a, b, b_bszB, b_listno);
6948         if (vgPlain_clo_profile_heap) {   6951         if (vgPlain_clo_profile_heap) {
6949           set_cc(b, (HChar *)"admin.free-2");   6952           set_cc(b, (HChar *)"admin.free-2");
6950         } else {   6953         } else {
6951     6954  
6952         }   6955         }
6953       }   6956       }
6954     } else {   6957     } else {
6955       tmp___6 = __builtin_expect((long )(! (! ((unsigned int )(other_b - 1) == (unsigned int )((Block *)sb_end)))),   6958       tmp___6 = __builtin_expect((long )(! (! ((unsigned int )(other_b - 1) == (unsigned int )((Block *)sb_end)))),
6956                                  1L);   6959                                  1L);
6957       if (tmp___6) {   6960       if (tmp___6) {
6958     6961  
6959       } else {   6962       } else {
6960         vgPlain_assert_fail((Bool )1,   6963         vgPlain_assert_fail((Bool )1,
6961                             (Char const   *)"other_b-1 == (Block*)sb_end",   6964                             (Char const   *)"other_b-1 == (Block*)sb_end",
6962                             (Char const   *)"m_mallocfree.c", 1789,   6965                             (Char const   *)"m_mallocfree.c", 1789,
6963                             (Char const   *)"vgPlain_arena_free", "");   6966                             (Char const   *)"vgPlain_arena_free", "");
6964       }   6967       }
6965     }   6968     }
6966     tmp___13 = min_useful_bszB(a);   6969     tmp___13 = min_useful_bszB(a);
6967     if ((unsigned int )b >= (unsigned int )((Block *)sb_start + tmp___13)) {   6970     if ((unsigned int )b >= (unsigned int )((Block *)sb_start + tmp___13)) {
6968       other_b = get_predecessor_block(b);   6971       other_b = get_predecessor_block(b);
6969       other_bszB = get_bszB(other_b);   6972       other_bszB = get_bszB(other_b);
6970       tmp___11 = is_inuse_block(other_b);   6973       tmp___11 = is_inuse_block(other_b);
6971       if (tmp___11) {   6974       if (tmp___11) {
6972     6975  
6973       } else {   6976       } else {
6974         unlinkBlock(a, b, b_listno);   6977         unlinkBlock(a, b, b_listno);
6975         tmp___8 = bszB_to_pszB(a, other_bszB);   6978         tmp___8 = bszB_to_pszB(a, other_bszB);
6976         tmp___9 = pszB_to_listNo(tmp___8);   6979         tmp___9 = pszB_to_listNo(tmp___8);
6977         unlinkBlock(a, other_b, tmp___9);   6980         unlinkBlock(a, other_b, tmp___9);
6978         b = other_b;   6981         b = other_b;
6979         b_bszB += other_bszB;   6982         b_bszB += other_bszB;
6980         tmp___10 = bszB_to_pszB(a, b_bszB);   6983         tmp___10 = bszB_to_pszB(a, b_bszB);
6981         b_listno = pszB_to_listNo(tmp___10);   6984         b_listno = pszB_to_listNo(tmp___10);
6982         mkFreeBlock(a, b, b_bszB, b_listno);   6985         mkFreeBlock(a, b, b_bszB, b_listno);
6983         if (vgPlain_clo_profile_heap) {   6986         if (vgPlain_clo_profile_heap) {
6984           set_cc(b, (HChar *)"admin.free-3");   6987           set_cc(b, (HChar *)"admin.free-3");
6985         } else {   6988         } else {
6986     6989  
6987         }   6990         }
6988       }   6991       }
6989     } else {   6992     } else {
6990       tmp___12 = __builtin_expect((long )(! (! ((unsigned int )((Block *)sb_start) == (unsigned int )b))),   6993       tmp___12 = __builtin_expect((long )(! (! ((unsigned int )((Block *)sb_start) == (unsigned int )b))),
6991                                   1L);   6994                                   1L);
6992       if (tmp___12) {   6995       if (tmp___12) {
6993     6996  
6994       } else {   6997       } else {
6995         vgPlain_assert_fail((Bool )1, (Char const   *)"(Block*)sb_start == b",   6998         vgPlain_assert_fail((Bool )1, (Char const   *)"(Block*)sb_start == b",
6996                             (Char const   *)"m_mallocfree.c", 1814,   6999                             (Char const   *)"m_mallocfree.c", 1814,
6997                             (Char const   *)"vgPlain_arena_free", "");   7000                             (Char const   *)"vgPlain_arena_free", "");
6998       }   7001       }
6999     }   7002     }
7000     if ((unsigned int )((Block *)sb_start) == (unsigned int )b) {   7003     if ((unsigned int )((Block *)sb_start) == (unsigned int )b) {
7001       if ((unsigned int )((b + b_bszB) - 1) == (unsigned int )((Block *)sb_end)) {   7004       if ((unsigned int )((b + b_bszB) - 1) == (unsigned int )((Block *)sb_end)) {
7002         deferred_reclaimSuperblock(a, sb);   7005         deferred_reclaimSuperblock(a, sb);
7003       } else {   7006       } else {
7004     7007  
7005       }   7008       }
7006     } else {   7009     } else {
7007     7010  
7008     }   7011     }
7009     while (1) {   7012     while (1) {
7010       break;   7013       break;
7011     }   7014     }
7012     while (1) {   7015     while (1) {
7013       break;   7016       break;
7014     }   7017     }
7015     while (1) {   7018     while (1) {
7016       break;   7019       break;
7017     }   7020     }
7018     while (1) {   7021     while (1) {
7019       break;   7022       break;
7020     }   7023     }
7021   } else {   7024   } else {
7022     tmp___14 = __builtin_expect((long )(! (! ((unsigned int )((Block *)sb_start) == (unsigned int )b))),   7025     tmp___14 = __builtin_expect((long )(! (! ((unsigned int )((Block *)sb_start) == (unsigned int )b))),
7023                                 1L);   7026                                 1L);
7024     if (tmp___14) {   7027     if (tmp___14) {
7025     7028  
7026     } else {   7029     } else {
7027       vgPlain_assert_fail((Bool )1, (Char const   *)"(Block*)sb_start == b",   7030       vgPlain_assert_fail((Bool )1, (Char const   *)"(Block*)sb_start == b",
7028                           (Char const   *)"m_mallocfree.c", 1850,   7031                           (Char const   *)"m_mallocfree.c", 1850,
7029                           (Char const   *)"vgPlain_arena_free", "");   7032                           (Char const   *)"vgPlain_arena_free", "");
7030     }   7033     }
7031     other_b = b + b_bszB;   7034     other_b = b + b_bszB;
7032     tmp___15 = __builtin_expect((long )(! (! ((unsigned int )(other_b - 1) == (unsigned int )((Block *)sb_end)))),   7035     tmp___15 = __builtin_expect((long )(! (! ((unsigned int )(other_b - 1) == (unsigned int )((Block *)sb_end)))),
7033                                 1L);   7036                                 1L);
7034     if (tmp___15) {   7037     if (tmp___15) {
7035     7038  
7036     } else {   7039     } else {
7037       vgPlain_assert_fail((Bool )1,   7040       vgPlain_assert_fail((Bool )1,
7038                           (Char const   *)"other_b-1 == (Block*)sb_end",   7041                           (Char const   *)"other_b-1 == (Block*)sb_end",
7039                           (Char const   *)"m_mallocfree.c", 1854,   7042                           (Char const   *)"m_mallocfree.c", 1854,
7040                           (Char const   *)"vgPlain_arena_free", "");   7043                           (Char const   *)"vgPlain_arena_free", "");
7041     }   7044     }
7042     while (1) {   7045     while (1) {
7043       break;   7046       break;
7044     }   7047     }
7045     reclaimSuperblock(a, sb);   7048     reclaimSuperblock(a, sb);
7046   }   7049   }
7047   return;   7050   return;
7048 }   7051 }
7049 }   7052 }
7050 void *vgPlain_arena_memalign(ArenaId aid , HChar *cc , SizeT req_alignB ,   7053 void *vgPlain_arena_memalign(ArenaId aid , HChar *cc , SizeT req_alignB ,
7051                              SizeT req_pszB )   7054                              SizeT req_pszB )
7052 {   7055 {
7053   SizeT base_pszB_req ;   7056   SizeT base_pszB_req ;
7054   SizeT base_pszB_act ;   7057   SizeT base_pszB_act ;
7055   SizeT frag_bszB ;   7058   SizeT frag_bszB ;
7056   Block *base_b ;   7059   Block *base_b ;
7057   Block *align_b ;   7060   Block *align_b ;
7058   UByte *base_p ;   7061   UByte *base_p ;
7059   UByte *align_p ;   7062   UByte *align_p ;
7060   SizeT saved_bytes_on_loan ;   7063   SizeT saved_bytes_on_loan ;
7061   Arena *a ;   7064   Arena *a ;
7062   long tmp ;   7065   long tmp ;
7063   long tmp___0 ;   7066   long tmp___0 ;
7064   Int tmp___1 ;   7067   Int tmp___1 ;
7065   long tmp___2 ;   7068   long tmp___2 ;
7066   SizeT tmp___3 ;   7069   SizeT tmp___3 ;
7067   SizeT save_min_unsplittable_sblock_szB ;   7070   SizeT save_min_unsplittable_sblock_szB ;
7068   void *tmp___4 ;   7071   void *tmp___4 ;
7069   SizeT tmp___5 ;   7072   SizeT tmp___5 ;
7070   SizeT tmp___6 ;   7073   SizeT tmp___6 ;
7071   void *tmp___7 ;   7074   void *tmp___7 ;
7072   SizeT tmp___8 ;   7075   SizeT tmp___8 ;
7073   int tmp___9 ;   7076   int tmp___9 ;
7074   long tmp___10 ;   7077   long tmp___10 ;
7075   SizeT tmp___11 ;   7078   SizeT tmp___11 ;
7076   UInt tmp___12 ;   7079   UInt tmp___12 ;
7077   SizeT tmp___13 ;   7080   SizeT tmp___13 ;
7078   Block *tmp___14 ;   7081   Block *tmp___14 ;
7079   Bool tmp___15 ;   7082   Bool tmp___15 ;
7080   int tmp___16 ;   7083   int tmp___16 ;
7081   long tmp___17 ;   7084   long tmp___17 ;
7082   Block *tmp___18 ;   7085   Block *tmp___18 ;
7083   SizeT tmp___19 ;   7086   SizeT tmp___19 ;
7084   int tmp___20 ;   7087   int tmp___20 ;
7085   long tmp___21 ;   7088   long tmp___21 ;
7086   Block *tmp___22 ;   7089   Block *tmp___22 ;
7087   SizeT tmp___23 ;   7090   SizeT tmp___23 ;
7088   long tmp___24 ;   7091   long tmp___24 ;
7089     7092  
7090   {   7093   {
7091   ensure_mm_init(aid);   7094   ensure_mm_init(aid);
7092   a = arenaId_to_ArenaP(aid);   7095   a = arenaId_to_ArenaP(aid);
7093   tmp = __builtin_expect((long )(! (! (req_pszB < 4294967295UL))), 1L);   7096   tmp = __builtin_expect((long )(! (! (req_pszB < 4294967295UL))), 1L);
7094   if (tmp) {   7097   if (tmp) {
7095     7098  
7096   } else {   7099   } else {
7097     vgPlain_assert_fail((Bool )1, (Char const   *)"req_pszB < MAX_PSZB",   7100     vgPlain_assert_fail((Bool )1, (Char const   *)"req_pszB < MAX_PSZB",
7098                         (Char const   *)"m_mallocfree.c", 1917,   7101                         (Char const   *)"m_mallocfree.c", 1917,
7099                         (Char const   *)"vgPlain_arena_memalign", "");   7102                         (Char const   *)"vgPlain_arena_memalign", "");
7100   }   7103   }
7101   tmp___0 = __builtin_expect((long )(! (! cc)), 1L);   7104   tmp___0 = __builtin_expect((long )(! (! cc)), 1L);
7102   if (tmp___0) {   7105   if (tmp___0) {
7103     7106  
7104   } else {   7107   } else {
7105     vgPlain_assert_fail((Bool )1, (Char const   *)"cc",   7108     vgPlain_assert_fail((Bool )1, (Char const   *)"cc",
7106                         (Char const   *)"m_mallocfree.c", 1921,   7109                         (Char const   *)"m_mallocfree.c", 1921,
7107                         (Char const   *)"vgPlain_arena_memalign", "");   7110                         (Char const   *)"vgPlain_arena_memalign", "");
7108   }   7111   }
7109   if (req_alignB < 8UL) {   7112   if (req_alignB < 8UL) {
7110     vgPlain_printf("VG_(arena_memalign)(%p, %lu, %lu)\nbad alignment value %lu\n(it is too small, too big, or not a power of two)",   7113     vgPlain_printf("VG_(arena_memalign)(%p, %lu, %lu)\nbad alignment value %lu\n(it is too small, too big, or not a power of two)",
7111                    a, req_alignB, req_pszB, req_alignB);   7114                    a, req_alignB, req_pszB, req_alignB);
7112     vgPlain_core_panic((Char *)"VG_(arena_memalign)");   7115     vgPlain_core_panic((Char *)"VG_(arena_memalign)");
7113   } else   7116   } else
7114   if (req_alignB > 1048576UL) {   7117   if (req_alignB > 1048576UL) {
7115     vgPlain_printf("VG_(arena_memalign)(%p, %lu, %lu)\nbad alignment value %lu\n(it is too small, too big, or not a power of two)",   7118     vgPlain_printf("VG_(arena_memalign)(%p, %lu, %lu)\nbad alignment value %lu\n(it is too small, too big, or not a power of two)",
7116                    a, req_alignB, req_pszB, req_alignB);   7119                    a, req_alignB, req_pszB, req_alignB);
7117     vgPlain_core_panic((Char *)"VG_(arena_memalign)");   7120     vgPlain_core_panic((Char *)"VG_(arena_memalign)");
7118   } else {   7121   } else {
7119     tmp___1 = vgPlain_log2((UInt )req_alignB);   7122     tmp___1 = vgPlain_log2((UInt )req_alignB);
7120     if (tmp___1 == -1) {   7123     if (tmp___1 == -1) {
7121       vgPlain_printf("VG_(arena_memalign)(%p, %lu, %lu)\nbad alignment value %lu\n(it is too small, too big, or not a power of two)",   7124       vgPlain_printf("VG_(arena_memalign)(%p, %lu, %lu)\nbad alignment value %lu\n(it is too small, too big, or not a power of two)",
7122                      a, req_alignB, req_pszB, req_alignB);   7125                      a, req_alignB, req_pszB, req_alignB);
7123       vgPlain_core_panic((Char *)"VG_(arena_memalign)");   7126       vgPlain_core_panic((Char *)"VG_(arena_memalign)");
7124     } else {   7127     } else {
7125     7128  
7126     }   7129     }
7127   }   7130   }
7128   tmp___2 = __builtin_expect((long )(! (! (req_alignB % 8UL == 0UL))), 1L);   7131   tmp___2 = __builtin_expect((long )(! (! (req_alignB % 8UL == 0UL))), 1L);
7129   if (tmp___2) {   7132   if (tmp___2) {
7130     7133  
7131   } else {   7134   } else {
7132     vgPlain_assert_fail((Bool )1,   7135     vgPlain_assert_fail((Bool )1,
7133                         (Char const   *)"req_alignB % VG_MIN_MALLOC_SZB == 0",   7136                         (Char const   *)"req_alignB % VG_MIN_MALLOC_SZB == 0",
7134                         (Char const   *)"m_mallocfree.c", 1936,   7137                         (Char const   *)"m_mallocfree.c", 1936,
7135                         (Char const   *)"vgPlain_arena_memalign", "");   7138                         (Char const   *)"vgPlain_arena_memalign", "");
7136   }   7139   }
7137   req_pszB = align_req_pszB(req_pszB);   7140   req_pszB = align_req_pszB(req_pszB);
7138   tmp___3 = min_useful_bszB(a);   7141   tmp___3 = min_useful_bszB(a);
7139   base_pszB_req = (req_pszB + tmp___3) + req_alignB;   7142   base_pszB_req = (req_pszB + tmp___3) + req_alignB;
7140   saved_bytes_on_loan = a->stats__bytes_on_loan;   7143   saved_bytes_on_loan = a->stats__bytes_on_loan;
7141   save_min_unsplittable_sblock_szB = a->min_unsplittable_sblock_szB;   7144   save_min_unsplittable_sblock_szB = a->min_unsplittable_sblock_szB;
7142   a->min_unsplittable_sblock_szB = ~ ((SizeT )0);   7145   a->min_unsplittable_sblock_szB = ~ ((SizeT )0);
7143   tmp___4 = vgPlain_arena_malloc(aid, cc, base_pszB_req);   7146   tmp___4 = vgPlain_arena_malloc(aid, cc, base_pszB_req);
7144   base_p = (UByte *)tmp___4;   7147   base_p = (UByte *)tmp___4;
7145   a->min_unsplittable_sblock_szB = save_min_unsplittable_sblock_szB;   7148   a->min_unsplittable_sblock_szB = save_min_unsplittable_sblock_szB;
7146   a->stats__bytes_on_loan = saved_bytes_on_loan;   7149   a->stats__bytes_on_loan = saved_bytes_on_loan;
7147   if ((unsigned int )base_p == (unsigned int )((UByte *)0)) {   7150   if ((unsigned int )base_p == (unsigned int )((UByte *)0)) {
7148     return ((void *)0);   7151     return ((void *)0);
7149   } else {   7152   } else {
7150     7153  
7151   }   7154   }
7152   while (1) {   7155   while (1) {
7153     break;   7156     break;
7154   }   7157   }
7155   while (1) {   7158   while (1) {
7156     break;   7159     break;
7157   }   7160   }
7158   base_b = get_payload_block(a, base_p);   7161   base_b = get_payload_block(a, base_p);
7159   tmp___5 = overhead_szB_lo(a);   7162   tmp___5 = overhead_szB_lo(a);
7160   tmp___6 = overhead_szB_hi(a);   7163   tmp___6 = overhead_szB_hi(a);
7161   tmp___7 = align_upwards((void *)((base_b + 2UL * tmp___5) + tmp___6),   7164   tmp___7 = align_upwards((void *)((base_b + 2UL * tmp___5) + tmp___6),
7162                           req_alignB);   7165                           req_alignB);
7163   align_p = (UByte *)tmp___7;   7166   align_p = (UByte *)tmp___7;
7164   align_b = get_payload_block(a, align_p);   7167   align_b = get_payload_block(a, align_p);
7165   frag_bszB = (SizeT )(align_b - base_b);   7168   frag_bszB = (SizeT )(align_b - base_b);
7166   tmp___8 = min_useful_bszB(a);   7169   tmp___8 = min_useful_bszB(a);
7167   if (frag_bszB >= tmp___8) {   7170   if (frag_bszB >= tmp___8) {
7168     tmp___9 = 1;   7171     tmp___9 = 1;
7169   } else {   7172   } else {
7170     tmp___9 = 0;   7173     tmp___9 = 0;
7171   }   7174   }
7172   tmp___10 = __builtin_expect((long )tmp___9, 1L);   7175   tmp___10 = __builtin_expect((long )tmp___9, 1L);
7173   if (tmp___10) {   7176   if (tmp___10) {
7174     7177  
7175   } else {   7178   } else {
7176     vgPlain_assert_fail((Bool )1,   7179     vgPlain_assert_fail((Bool )1,
7177                         (Char const   *)"frag_bszB >= min_useful_bszB(a)",   7180                         (Char const   *)"frag_bszB >= min_useful_bszB(a)",
7178                         (Char const   *)"m_mallocfree.c", 1982,   7181                         (Char const   *)"m_mallocfree.c", 1982,
7179                         (Char const   *)"vgPlain_arena_memalign", "");   7182                         (Char const   *)"vgPlain_arena_memalign", "");
7180   }   7183   }
7181   base_pszB_act = get_pszB(a, base_b);   7184   base_pszB_act = get_pszB(a, base_b);
7182   tmp___11 = bszB_to_pszB(a, frag_bszB);   7185   tmp___11 = bszB_to_pszB(a, frag_bszB);
7183   tmp___12 = pszB_to_listNo(tmp___11);   7186   tmp___12 = pszB_to_listNo(tmp___11);
7184   mkFreeBlock(a, base_b, frag_bszB, tmp___12);   7187   mkFreeBlock(a, base_b, frag_bszB, tmp___12);
7185   if (vgPlain_clo_profile_heap) {   7188   if (vgPlain_clo_profile_heap) {
7186     set_cc(base_b, (HChar *)"admin.frag-memalign-1");   7189     set_cc(base_b, (HChar *)"admin.frag-memalign-1");
7187   } else {   7190   } else {
7188     7191  
7189   }   7192   }
7190   tmp___13 = overhead_szB_hi(a);   7193   tmp___13 = overhead_szB_hi(a);
7191   mkInuseBlock(a, align_b,   7194   mkInuseBlock(a, align_b,
7192                (SizeT )(((base_p + base_pszB_act) + tmp___13) - (UByte *)align_b));   7195                (SizeT )(((base_p + base_pszB_act) + tmp___13) - (UByte *)align_b));
7193   if (vgPlain_clo_profile_heap) {   7196   if (vgPlain_clo_profile_heap) {
7194     set_cc(align_b, cc);   7197     set_cc(align_b, cc);
7195   } else {   7198   } else {
7196     7199  
7197   }   7200   }
7198   tmp___14 = get_payload_block(a, align_p);   7201   tmp___14 = get_payload_block(a, align_p);
7199   tmp___15 = is_inuse_block(tmp___14);   7202   tmp___15 = is_inuse_block(tmp___14);
7200   if (tmp___15) {   7203   if (tmp___15) {
7201     tmp___16 = 1;   7204     tmp___16 = 1;
7202   } else {   7205   } else {
7203     tmp___16 = 0;   7206     tmp___16 = 0;
7204   }   7207   }
7205   tmp___17 = __builtin_expect((long )tmp___16, 1L);   7208   tmp___17 = __builtin_expect((long )tmp___16, 1L);
7206   if (tmp___17) {   7209   if (tmp___17) {
7207     7210  
7208   } else {   7211   } else {
7209     vgPlain_assert_fail((Bool )1,   7212     vgPlain_assert_fail((Bool )1,
7210                         (Char const   *)"is_inuse_block(get_payload_block(a, align_p))",   7213                         (Char const   *)"is_inuse_block(get_payload_block(a, align_p))",
7211                         (Char const   *)"m_mallocfree.c", 2001,   7214                         (Char const   *)"m_mallocfree.c", 2001,
7212                         (Char const   *)"vgPlain_arena_memalign", "");   7215                         (Char const   *)"vgPlain_arena_memalign", "");
7213   }   7216   }
7214   tmp___18 = get_payload_block(a, align_p);   7217   tmp___18 = get_payload_block(a, align_p);
7215   tmp___19 = get_pszB(a, tmp___18);   7218   tmp___19 = get_pszB(a, tmp___18);
7216   if (req_pszB <= tmp___19) {   7219   if (req_pszB <= tmp___19) {
7217     tmp___20 = 1;   7220     tmp___20 = 1;
7218   } else {   7221   } else {
7219     tmp___20 = 0;   7222     tmp___20 = 0;
7220   }   7223   }
7221   tmp___21 = __builtin_expect((long )tmp___20, 1L);   7224   tmp___21 = __builtin_expect((long )tmp___20, 1L);
7222   if (tmp___21) {   7225   if (tmp___21) {
7223     7226  
7224   } else {   7227   } else {
7225     vgPlain_assert_fail((Bool )1,   7228     vgPlain_assert_fail((Bool )1,
7226                         (Char const   *)"req_pszB <= get_pszB(a, get_payload_block(a, align_p))",   7229                         (Char const   *)"req_pszB <= get_pszB(a, get_payload_block(a, align_p))",
7227                         (Char const   *)"m_mallocfree.c", 2003,   7230                         (Char const   *)"m_mallocfree.c", 2003,
7228                         (Char const   *)"vgPlain_arena_memalign", "");   7231                         (Char const   *)"vgPlain_arena_memalign", "");
7229   }   7232   }
7230   tmp___22 = get_payload_block(a, align_p);   7233   tmp___22 = get_payload_block(a, align_p);
7231   tmp___23 = get_pszB(a, tmp___22);   7234   tmp___23 = get_pszB(a, tmp___22);
7232   a->stats__bytes_on_loan += tmp___23;   7235   a->stats__bytes_on_loan += tmp___23;
7233   if (a->stats__bytes_on_loan > a->stats__bytes_on_loan_max) {   7236   if (a->stats__bytes_on_loan > a->stats__bytes_on_loan_max) {
7234     a->stats__bytes_on_loan_max = a->stats__bytes_on_loan;   7237     a->stats__bytes_on_loan_max = a->stats__bytes_on_loan;
7235   } else {   7238   } else {
7236     7239  
7237   }   7240   }
7238   tmp___24 = __builtin_expect((long )(! (! ((Addr )align_p % req_alignB == 0UL))),   7241   tmp___24 = __builtin_expect((long )(! (! ((Addr )align_p % req_alignB == 0UL))),
7239                               1L);   7242                               1L);
7240   if (tmp___24) {   7243   if (tmp___24) {
7241     7244  
7242   } else {   7245   } else {
7243     vgPlain_assert_fail((Bool )1,   7246     vgPlain_assert_fail((Bool )1,
7244                         (Char const   *)"(((Addr)align_p) % req_alignB) == 0",   7247                         (Char const   *)"(((Addr)align_p) % req_alignB) == 0",
7245                         (Char const   *)"m_mallocfree.c", 2017,   7248                         (Char const   *)"m_mallocfree.c", 2017,
7246                         (Char const   *)"vgPlain_arena_memalign", "");   7249                         (Char const   *)"vgPlain_arena_memalign", "");
7247   }   7250   }
7248   while (1) {   7251   while (1) {
7249     break;   7252     break;
7250   }   7253   }
7251   return ((void *)align_p);   7254   return ((void *)align_p);
7252 }   7255 }
7253 }   7256 }
7254 SizeT vgPlain_arena_malloc_usable_size(ArenaId aid , void *ptr )   7257 SizeT vgPlain_arena_malloc_usable_size(ArenaId aid , void *ptr )
7255 {   7258 {
7256   Arena *a ;   7259   Arena *a ;
7257   Arena *tmp ;   7260   Arena *tmp ;
7258   Block *b ;   7261   Block *b ;
7259   Block *tmp___0 ;   7262   Block *tmp___0 ;
7260   SizeT tmp___1 ;   7263   SizeT tmp___1 ;
7261     7264  
7262   {   7265   {
7263   tmp = arenaId_to_ArenaP(aid);   7266   tmp = arenaId_to_ArenaP(aid);
7264   a = tmp;   7267   a = tmp;
7265   tmp___0 = get_payload_block(a, (UByte *)ptr);   7268   tmp___0 = get_payload_block(a, (UByte *)ptr);
7266   b = tmp___0;   7269   b = tmp___0;
7267   tmp___1 = get_pszB(a, b);   7270   tmp___1 = get_pszB(a, b);
7268   return (tmp___1);   7271   return (tmp___1);
7269 }   7272 }
7270 }   7273 }
7271 void vgPlain_mallinfo(ThreadId tid , struct vg_mallinfo *mi )   7274 void vgPlain_mallinfo(ThreadId tid , struct vg_mallinfo *mi )
7272 {   7275 {
7273   UWord i ;   7276   UWord i ;
7274   UWord free_blocks ;   7277   UWord free_blocks ;
7275   UWord free_blocks_size ;   7278   UWord free_blocks_size ;
7276   Arena *a ;   7279   Arena *a ;
7277   Arena *tmp ;   7280   Arena *tmp ;
7278   Block *b ;   7281   Block *b ;
7279   SizeT tmp___0 ;   7282   SizeT tmp___0 ;
7280     7283  
7281   {   7284   {
7282   tmp = arenaId_to_ArenaP(3);   7285   tmp = arenaId_to_ArenaP(3);
7283   a = tmp;   7286   a = tmp;
7284   free_blocks = (UWord )0;   7287   free_blocks = (UWord )0;
7285   free_blocks_size = free_blocks;   7288   free_blocks_size = free_blocks;
7286   i = (UWord )0;   7289   i = (UWord )0;
7287   while (i < 112UL) {   7290   while (i < 112UL) {
7288     b = a->freelist[i];   7291     b = a->freelist[i];
7289     if ((unsigned int )b == (unsigned int )((void *)0)) {   7292     if ((unsigned int )b == (unsigned int )((void *)0)) {
7290       goto __Cont;   7293       goto __Cont;
7291     } else {   7294     } else {
7292     7295  
7293     }   7296     }
7294     while (1) {   7297     while (1) {
7295       free_blocks ++;   7298       free_blocks ++;
7296       tmp___0 = get_pszB(a, b);   7299       tmp___0 = get_pszB(a, b);
7297       free_blocks_size += tmp___0;   7300       free_blocks_size += tmp___0;
7298       b = get_next_b(b);   7301       b = get_next_b(b);
7299       if ((unsigned int )b == (unsigned int )a->freelist[i]) {   7302       if ((unsigned int )b == (unsigned int )a->freelist[i]) {
7300         break;   7303         break;
7301       } else {   7304       } else {
7302     7305  
7303       }   7306       }
7304     }   7307     }
7305     __Cont: /* CIL Label */   7308     __Cont: /* CIL Label */
7306     i ++;   7309     i ++;
7307   }   7310   }
7308   mi->arena = (int )a->stats__bytes_mmaped;   7311   mi->arena = (int )a->stats__bytes_mmaped;
7309   mi->ordblks = (int )((Long )free_blocks + vgPlain_free_queue_length);   7312   mi->ordblks = (int )((Long )free_blocks + vgPlain_free_queue_length);
7310   mi->smblks = 0;   7313   mi->smblks = 0;
7311   mi->hblks = 0;   7314   mi->hblks = 0;
7312   mi->hblkhd = 0;   7315   mi->hblkhd = 0;
7313   mi->usmblks = 0;   7316   mi->usmblks = 0;
7314   mi->fsmblks = 0;   7317   mi->fsmblks = 0;
7315   mi->uordblks = (int )((Long )a->stats__bytes_on_loan - vgPlain_free_queue_volume);   7318   mi->uordblks = (int )((Long )a->stats__bytes_on_loan - vgPlain_free_queue_volume);
7316   mi->fordblks = (int )((Long )free_blocks_size + vgPlain_free_queue_volume);   7319   mi->fordblks = (int )((Long )free_blocks_size + vgPlain_free_queue_volume);
7317   mi->keepcost = 0;   7320   mi->keepcost = 0;
7318   return;   7321   return;
7319 }   7322 }
7320 }   7323 }
7321 void *vgPlain_arena_calloc(ArenaId aid , HChar *cc , SizeT nmemb ,   7324 void *vgPlain_arena_calloc(ArenaId aid , HChar *cc , SizeT nmemb ,
7322                            SizeT bytes_per_memb )   7325                            SizeT bytes_per_memb )
7323 {   7326 {
7324   SizeT size ;   7327   SizeT size ;
7325   UChar *p ;   7328   UChar *p ;
7326   int tmp ;   7329   int tmp ;
7327   long tmp___0 ;   7330   long tmp___0 ;
7328   void *tmp___1 ;   7331   void *tmp___1 ;
7329     7332  
7330   {   7333   {
7331   size = nmemb * bytes_per_memb;   7334   size = nmemb * bytes_per_memb;
7332   if (size >= nmemb) {   7335   if (size >= nmemb) {
7333     if (size >= bytes_per_memb) {   7336     if (size >= bytes_per_memb) {
7334       tmp = 1;   7337       tmp = 1;
7335     } else {   7338     } else {
7336       tmp = 0;   7339       tmp = 0;
7337     }   7340     }
7338   } else {   7341   } else {
7339     tmp = 0;   7342     tmp = 0;
7340   }   7343   }
7341   tmp___0 = __builtin_expect((long )tmp, 1L);   7344   tmp___0 = __builtin_expect((long )tmp, 1L);
7342   if (tmp___0) {   7345   if (tmp___0) {
7343     7346  
7344   } else {   7347   } else {
7345     vgPlain_assert_fail((Bool )1,   7348     vgPlain_assert_fail((Bool )1,
7346                         (Char const   *)"size >= nmemb && size >= bytes_per_memb",   7349                         (Char const   *)"size >= nmemb && size >= bytes_per_memb",
7347                         (Char const   *)"m_mallocfree.c", 2106,   7350                         (Char const   *)"m_mallocfree.c", 2106,
7348                         (Char const   *)"vgPlain_arena_calloc", "");   7351                         (Char const   *)"vgPlain_arena_calloc", "");
7349   }   7352   }
7350   tmp___1 = vgPlain_arena_malloc(aid, cc, size);   7353   tmp___1 = vgPlain_arena_malloc(aid, cc, size);
7351   p = (UChar *)tmp___1;   7354   p = (UChar *)tmp___1;
7352   vgPlain_memset((void *)p, 0, size);   7355   vgPlain_memset((void *)p, 0, size);
7353   return ((void *)p);   7356   return ((void *)p);
7354 }   7357 }
7355 }   7358 }
7356 void *vgPlain_arena_realloc(ArenaId aid , HChar *cc , void *ptr ,   7359 void *vgPlain_arena_realloc(ArenaId aid , HChar *cc , void *ptr ,
7357                             SizeT req_pszB )   7360                             SizeT req_pszB )
7358 {   7361 {
7359   Arena *a ;   7362   Arena *a ;
7360   SizeT old_pszB ;   7363   SizeT old_pszB ;
7361   UChar *p_new ;   7364   UChar *p_new ;
7362   Block *b ;   7365   Block *b ;
7363   long tmp ;   7366   long tmp ;
7364   void *tmp___0 ;   7367   void *tmp___0 ;
7365   Bool tmp___1 ;   7368   Bool tmp___1 ;
7366   int tmp___2 ;   7369   int tmp___2 ;
7367   long tmp___3 ;   7370   long tmp___3 ;
7368   Bool tmp___4 ;   7371   Bool tmp___4 ;
7369   int tmp___5 ;   7372   int tmp___5 ;
7370   long tmp___6 ;   7373   long tmp___6 ;
7371   void *tmp___7 ;   7374   void *tmp___7 ;
7372     7375  
7373   {   7376   {
7374   ensure_mm_init(aid);   7377   ensure_mm_init(aid);
7375   a = arenaId_to_ArenaP(aid);   7378   a = arenaId_to_ArenaP(aid);
7376   tmp = __builtin_expect((long )(! (! (req_pszB < 4294967295UL))), 1L);   7379   tmp = __builtin_expect((long )(! (! (req_pszB < 4294967295UL))), 1L);
7377   if (tmp) {   7380   if (tmp) {
7378     7381  
7379   } else {   7382   } else {
7380     vgPlain_assert_fail((Bool )1, (Char const   *)"req_pszB < MAX_PSZB",   7383     vgPlain_assert_fail((Bool )1, (Char const   *)"req_pszB < MAX_PSZB",
7381                         (Char const   *)"m_mallocfree.c", 2127,   7384                         (Char const   *)"m_mallocfree.c", 2127,
7382                         (Char const   *)"vgPlain_arena_realloc", "");   7385                         (Char const   *)"vgPlain_arena_realloc", "");
7383   }   7386   }
7384   if ((unsigned int )((void *)0) == (unsigned int )ptr) {   7387   if ((unsigned int )((void *)0) == (unsigned int )ptr) {
7385     tmp___0 = vgPlain_arena_malloc(aid, cc, req_pszB);   7388     tmp___0 = vgPlain_arena_malloc(aid, cc, req_pszB);
7386     return (tmp___0);   7389     return (tmp___0);
7387   } else {   7390   } else {
7388     7391  
7389   }   7392   }
7390   if (req_pszB == 0UL) {   7393   if (req_pszB == 0UL) {
7391     vgPlain_arena_free(aid, ptr);   7394     vgPlain_arena_free(aid, ptr);
7392     return ((void *)0);   7395     return ((void *)0);
7393   } else {   7396   } else {
7394     7397  
7395   }   7398   }
7396   b = get_payload_block(a, (UByte *)ptr);   7399   b = get_payload_block(a, (UByte *)ptr);
7397   tmp___1 = blockSane(a, b);   7400   tmp___1 = blockSane(a, b);
7398   if (tmp___1) {   7401   if (tmp___1) {
7399     tmp___2 = 1;   7402     tmp___2 = 1;
7400   } else {   7403   } else {
7401     tmp___2 = 0;   7404     tmp___2 = 0;
7402   }   7405   }
7403   tmp___3 = __builtin_expect((long )tmp___2, 1L);   7406   tmp___3 = __builtin_expect((long )tmp___2, 1L);
7404   if (tmp___3) {   7407   if (tmp___3) {
7405     7408  
7406   } else {   7409   } else {
7407     vgPlain_assert_fail((Bool )1, (Char const   *)"blockSane(a, b)",   7410     vgPlain_assert_fail((Bool )1, (Char const   *)"blockSane(a, b)",
7408                         (Char const   *)"m_mallocfree.c", 2139,   7411                         (Char const   *)"m_mallocfree.c", 2139,
7409                         (Char const   *)"vgPlain_arena_realloc", "");   7412                         (Char const   *)"vgPlain_arena_realloc", "");
7410   }   7413   }
7411   tmp___4 = is_inuse_block(b);   7414   tmp___4 = is_inuse_block(b);
7412   if (tmp___4) {   7415   if (tmp___4) {
7413     tmp___5 = 1;   7416     tmp___5 = 1;
7414   } else {   7417   } else {
7415     tmp___5 = 0;   7418     tmp___5 = 0;
7416   }   7419   }
7417   tmp___6 = __builtin_expect((long )tmp___5, 1L);   7420   tmp___6 = __builtin_expect((long )tmp___5, 1L);
7418   if (tmp___6) {   7421   if (tmp___6) {
7419     7422  
7420   } else {   7423   } else {
7421     vgPlain_assert_fail((Bool )1, (Char const   *)"is_inuse_block(b)",   7424     vgPlain_assert_fail((Bool )1, (Char const   *)"is_inuse_block(b)",
7422                         (Char const   *)"m_mallocfree.c", 2141,   7425                         (Char const   *)"m_mallocfree.c", 2141,
7423                         (Char const   *)"vgPlain_arena_realloc", "");   7426                         (Char const   *)"vgPlain_arena_realloc", "");
7424   }   7427   }
7425   old_pszB = get_pszB(a, b);   7428   old_pszB = get_pszB(a, b);
7426   if (req_pszB <= old_pszB) {   7429   if (req_pszB <= old_pszB) {
7427     return (ptr);   7430     return (ptr);
7428   } else {   7431   } else {
7429     7432  
7430   }   7433   }
7431   tmp___7 = vgPlain_arena_malloc(aid, cc, req_pszB);   7434   tmp___7 = vgPlain_arena_malloc(aid, cc, req_pszB);
7432   p_new = (UChar *)tmp___7;   7435   p_new = (UChar *)tmp___7;
7433   vgPlain_memcpy((void *)p_new, (void const   *)ptr, old_pszB);   7436   vgPlain_memcpy((void *)p_new, (void const   *)ptr, old_pszB);
7434   vgPlain_arena_free(aid, ptr);   7437   vgPlain_arena_free(aid, ptr);
7435   return ((void *)p_new);   7438   return ((void *)p_new);
7436 }   7439 }
7437 }   7440 }
7438 __inline Char *vgPlain_arena_strdup(ArenaId aid , HChar *cc , Char const   *s )   7441 __inline Char *vgPlain_arena_strdup(ArenaId aid , HChar *cc , Char const   *s )
7439 {   7442 {
7440   Int i ;   7443   Int i ;
7441   Int len ;   7444   Int len ;
7442   Char *res ;   7445   Char *res ;
7443   SizeT tmp ;   7446   SizeT tmp ;
7444   void *tmp___0 ;   7447   void *tmp___0 ;
7445     7448  
7446   {   7449   {
7447   if ((unsigned int )s == (unsigned int )((void *)0)) {   7450   if ((unsigned int )s == (unsigned int )((void *)0)) {
7448     return ((Char *)((void *)0));   7451     return ((Char *)((void *)0));
7449   } else {   7452   } else {
7450     7453  
7451   }   7454   }
7452   tmp = vgPlain_strlen(s);   7455   tmp = vgPlain_strlen(s);
7453   len = (Int )(tmp + 1UL);   7456   len = (Int )(tmp + 1UL);
7454   tmp___0 = vgPlain_arena_malloc(aid, cc, (SizeT )len);   7457   tmp___0 = vgPlain_arena_malloc(aid, cc, (SizeT )len);
7455   res = (Char *)tmp___0;   7458   res = (Char *)tmp___0;
7456   i = 0;   7459   i = 0;
7457   while (i < len) {   7460   while (i < len) {
7458     *(res + i) = (Char )*(s + i);   7461     *(res + i) = (Char )*(s + i);
7459     i ++;   7462     i ++;
7460   }   7463   }
7461   return (res);   7464   return (res);
7462 }   7465 }
7463 }   7466 }
7464 void *vgPlain_malloc(HChar *cc , SizeT nbytes )   7467 void *vgPlain_malloc(HChar *cc , SizeT nbytes )
7465 {   7468 {
7466   void *tmp ;   7469   void *tmp ;
7467     7470  
7468   {   7471   {
7469   tmp = vgPlain_arena_malloc(1, cc, nbytes);   7472   tmp = vgPlain_arena_malloc(1, cc, nbytes);
7470   return (tmp);   7473   return (tmp);
7471 }   7474 }
7472 }   7475 }
7473 void vgPlain_free(void *ptr )   7476 void vgPlain_free(void *ptr )
7474 {   7477 {
7475     7478  
7476     7479  
7477   {   7480   {
7478   vgPlain_arena_free(1, ptr);   7481   vgPlain_arena_free(1, ptr);
7479   return;   7482   return;
7480 }   7483 }
7481 }   7484 }
7482 void *vgPlain_calloc(HChar *cc , SizeT nmemb , SizeT bytes_per_memb )   7485 void *vgPlain_calloc(HChar *cc , SizeT nmemb , SizeT bytes_per_memb )
7483 {   7486 {
7484   void *tmp ;   7487   void *tmp ;
7485     7488  
7486   {   7489   {
7487   tmp = vgPlain_arena_calloc(1, cc, nmemb, bytes_per_memb);   7490   tmp = vgPlain_arena_calloc(1, cc, nmemb, bytes_per_memb);
7488   return (tmp);   7491   return (tmp);
7489 }   7492 }
7490 }   7493 }
7491 void *vgPlain_realloc(HChar *cc , void *ptr , SizeT size )   7494 void *vgPlain_realloc(HChar *cc , void *ptr , SizeT size )
7492 {   7495 {
7493   void *tmp ;   7496   void *tmp ;
7494     7497  
7495   {   7498   {
7496   tmp = vgPlain_arena_realloc(1, cc, ptr, size);   7499   tmp = vgPlain_arena_realloc(1, cc, ptr, size);
7497   return (tmp);   7500   return (tmp);
7498 }   7501 }
7499 }   7502 }
7500 Char *vgPlain_strdup(HChar *cc , Char const   *s )   7503 Char *vgPlain_strdup(HChar *cc , Char const   *s )
7501 {   7504 {
7502   Char *tmp ;   7505   Char *tmp ;
7503     7506  
7504   {   7507   {
7505   tmp = vgPlain_arena_strdup(1, cc, s);   7508   tmp = vgPlain_arena_strdup(1, cc, s);
7506   return (tmp);   7509   return (tmp);
7507 }   7510 }
7508 }   7511 }
7509 SizeT vgPlain_malloc_usable_size(void *p )   7512 SizeT vgPlain_malloc_usable_size(void *p )
7510 {   7513 {
7511   SizeT tmp ;   7514   SizeT tmp ;
7512     7515  
7513   {   7516   {
7514   tmp = vgPlain_arena_malloc_usable_size(3, p);   7517   tmp = vgPlain_arena_malloc_usable_size(3, p);
7515   return (tmp);   7518   return (tmp);
7516 }   7519 }
7517 }   7520 }